some fixes

This commit is contained in:
benoitc 2010-08-12 11:30:07 +02:00
parent bf9d48be68
commit ed66b8b129
4 changed files with 15 additions and 10 deletions

View File

@ -3,6 +3,7 @@
# This file is part of gunicorn released under the MIT license.
# See the NOTICE for more information.
import errno
import logging
import os
import sys

View File

@ -44,8 +44,6 @@ def create(req, sock, client, server, cfg):
forward = client
url_scheme = "http"
script_name = os.environ.get("SCRIPT_NAME", "")
content_type = ""
content_length = ""
for hdr_name, hdr_value in req.headers:
if hdr_name == "EXPECT":

View File

@ -16,6 +16,8 @@ from eventlet import greenlet
from eventlet import greenpool
from eventlet import greenthread
from eventlet import hubs
from eventlet.greenio import GreenSocket
from gunicorn.workers.async import AsyncWorker
from gunicorn import util
@ -38,11 +40,12 @@ class EventletWorker(AsyncWorker):
return eventlet.Timeout(self.cfg.keepalive, False)
def run(self):
self.socket = GreenSocket(family_or_realsock=self.socket.sock)
self.socket.setblocking(1)
pool = greenpool.GreenPool(self.worker_connections)
acceptor = eventlet.spawn(self.acceptor, pool)
try:
while self.alive:
self.notify()
@ -56,15 +59,19 @@ class EventletWorker(AsyncWorker):
pass
# we stopped
eventlet.kill(acceptor, eventlet.StopServe)
with eventlet.Timeout(self.timeout, False):
if pool.waiting():
pool.waitall()
eventlet.kill(acceptor, eventlet.StopServe)
def acceptor(self, pool):
acceptor_gt = greenthread.getcurrent()
while self.alive:
# pool is full ?
if pool.running() > self.worker_connections:
continue
try:
try:
conn, addr = self.socket.accept()
@ -73,6 +80,7 @@ class EventletWorker(AsyncWorker):
sys.exc_clear()
return
raise
gt = pool.spawn(self.handle, conn, addr)
gt.link(self._stop_acceptor, acceptor_gt, conn)
conn, addr, gt = None, None, None
@ -81,9 +89,10 @@ class EventletWorker(AsyncWorker):
self.alive = False
break
except eventlet.StopServe:
if pool.waiting():
pool.waitall()
break
except:
self.log.exception("Unexpected error in acceptor. Sepuku.")
os._exit(4)

View File

@ -5,10 +5,7 @@
from __future__ import with_statement
import errno
import os
import socket
import sys
import gevent
from gevent import monkey