mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
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:
parent
b7b6179593
commit
d6012fa84b
@ -175,7 +175,12 @@ class Logger(object):
|
|||||||
}
|
}
|
||||||
|
|
||||||
# add request headers
|
# 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
|
# add response headers
|
||||||
atoms.update(dict([("{%s}o" % k.lower(),v) for k, v in resp.headers]))
|
atoms.update(dict([("{%s}o" % k.lower(),v) for k, v in resp.headers]))
|
||||||
|
|||||||
@ -96,13 +96,29 @@ class GeventWorker(AsyncWorker):
|
|||||||
gevent.core.dns_init()
|
gevent.core.dns_init()
|
||||||
super(GeventWorker, self).init_process()
|
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):
|
class PyWSGIHandler(pywsgi.WSGIHandler):
|
||||||
|
|
||||||
def log_request(self):
|
def log_request(self):
|
||||||
start = datetime.fromtimestamp(self.time_start)
|
start = datetime.fromtimestamp(self.time_start)
|
||||||
finish = datetime.fromtimestamp(self.time_finish)
|
finish = datetime.fromtimestamp(self.time_finish)
|
||||||
response_time = finish - start
|
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):
|
def get_environ(self):
|
||||||
env = super(PyWSGIHandler, self).get_environ()
|
env = super(PyWSGIHandler, self).get_environ()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user