fix gevent_pywsgi worker. close #314

access_log arity has changed in 0.14.0. Apply this change to the pywsgi
worker as well.
This commit is contained in:
benoitc 2012-03-16 07:18:30 +01:00
parent b7b6179593
commit d6012fa84b
2 changed files with 23 additions and 2 deletions

View File

@ -175,7 +175,12 @@ class Logger(object):
}
# add request headers
atoms.update(dict([("{%s}i" % k.lower(),v) for k, v in req.headers]))
if hasattr(req, 'headers'):
req_headers = req.headers
else:
req_headers = req
atoms.update(dict([("{%s}i" % k.lower(),v) for k, v in req_headers]))
# add response headers
atoms.update(dict([("{%s}o" % k.lower(),v) for k, v in resp.headers]))

View File

@ -96,13 +96,29 @@ class GeventWorker(AsyncWorker):
gevent.core.dns_init()
super(GeventWorker, self).init_process()
class GeventResponse(object):
status = None
headers = None
response_length = None
def __init__(self, status, headers, clength):
self.status = status
self.headers = headers
self.response_length = clength
class PyWSGIHandler(pywsgi.WSGIHandler):
def log_request(self):
start = datetime.fromtimestamp(self.time_start)
finish = datetime.fromtimestamp(self.time_finish)
response_time = finish - start
self.server.log.access(self, self.environ, response_time)
resp = GeventResponse(self.status, self.response_headers,
self.response_length)
req_headers = [h.split(":", 1) for h in self.headers.headers]
self.server.log.access(resp, req_headers, self.environ, response_time)
def get_environ(self):
env = super(PyWSGIHandler, self).get_environ()