mirror of
https://github.com/frappe/gunicorn.git
synced 2026-07-02 10:41:30 +08:00
Added response arg for post_request hook.
This commit is contained in:
parent
3118b08b99
commit
aac56c9d55
@ -315,12 +315,14 @@ def validate_post_request(val):
|
||||
val = validate_callable(-1)(val)
|
||||
|
||||
largs = len(inspect.getargspec(val)[0])
|
||||
if largs == 3:
|
||||
if largs == 4:
|
||||
return val
|
||||
elif largs == 3:
|
||||
return lambda worker, req, env, _r: val(worker, req, env)
|
||||
elif largs == 2:
|
||||
return lambda worker, req, _: val(worker, req)
|
||||
return lambda worker, req, _e, _r: val(worker, req)
|
||||
else:
|
||||
raise TypeError("Value must have an arity of: 3")
|
||||
raise TypeError("Value must have an arity of: 4")
|
||||
|
||||
|
||||
|
||||
@ -1022,7 +1024,7 @@ class PostRequest(Setting):
|
||||
section = "Server Hooks"
|
||||
validator = validate_post_request
|
||||
type = "callable"
|
||||
def post_request(worker, req, environ):
|
||||
def post_request(worker, req, environ, resp):
|
||||
pass
|
||||
default = staticmethod(post_request)
|
||||
desc = """\
|
||||
|
||||
@ -74,6 +74,8 @@ class AsyncWorker(base.Worker):
|
||||
|
||||
def handle_request(self, listener, req, sock, addr):
|
||||
request_start = datetime.now()
|
||||
environ = {}
|
||||
resp = None
|
||||
try:
|
||||
self.cfg.pre_request(self, req)
|
||||
resp, environ = wsgi.create(req, sock, addr,
|
||||
@ -103,7 +105,7 @@ class AsyncWorker(base.Worker):
|
||||
raise StopIteration()
|
||||
finally:
|
||||
try:
|
||||
self.cfg.post_request(self, req, environ)
|
||||
except:
|
||||
pass
|
||||
self.cfg.post_request(self, req, environ, resp)
|
||||
except Exception:
|
||||
self.log.exception("Exception in post_request hook")
|
||||
return True
|
||||
|
||||
@ -107,6 +107,7 @@ class SyncWorker(base.Worker):
|
||||
|
||||
def handle_request(self, listener, req, client, addr):
|
||||
environ = {}
|
||||
resp = None
|
||||
try:
|
||||
self.cfg.pre_request(self, req)
|
||||
request_start = datetime.now()
|
||||
@ -141,6 +142,6 @@ class SyncWorker(base.Worker):
|
||||
return
|
||||
finally:
|
||||
try:
|
||||
self.cfg.post_request(self, req, environ)
|
||||
except:
|
||||
pass
|
||||
self.cfg.post_request(self, req, environ, resp)
|
||||
except Exception:
|
||||
self.log.exception("Exception in post_request hook")
|
||||
|
||||
@ -192,3 +192,25 @@ def test_cli_overrides_config():
|
||||
app = NoConfigApp()
|
||||
t.eq(app.cfg.bind, ["blarney"])
|
||||
t.eq(app.cfg.proc_name, "fooey")
|
||||
|
||||
|
||||
def test_post_request():
|
||||
c = config.Config()
|
||||
|
||||
def post_request_4(worker, req, environ, resp):
|
||||
return 4
|
||||
|
||||
def post_request_3(worker, req, environ):
|
||||
return 3
|
||||
|
||||
def post_request_2(worker, req):
|
||||
return 2
|
||||
|
||||
c.set("post_request", post_request_4)
|
||||
t.eq(4, c.post_request(1, 2, 3, 4))
|
||||
|
||||
c.set("post_request", post_request_3)
|
||||
t.eq(3, c.post_request(1, 2, 3, 4))
|
||||
|
||||
c.set("post_request", post_request_2)
|
||||
t.eq(2, c.post_request(1, 2, 3, 4))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user