mirror of
https://github.com/frappe/gunicorn.git
synced 2026-07-08 05:31:29 +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)
|
val = validate_callable(-1)(val)
|
||||||
|
|
||||||
largs = len(inspect.getargspec(val)[0])
|
largs = len(inspect.getargspec(val)[0])
|
||||||
if largs == 3:
|
if largs == 4:
|
||||||
return val
|
return val
|
||||||
|
elif largs == 3:
|
||||||
|
return lambda worker, req, env, _r: val(worker, req, env)
|
||||||
elif largs == 2:
|
elif largs == 2:
|
||||||
return lambda worker, req, _: val(worker, req)
|
return lambda worker, req, _e, _r: val(worker, req)
|
||||||
else:
|
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"
|
section = "Server Hooks"
|
||||||
validator = validate_post_request
|
validator = validate_post_request
|
||||||
type = "callable"
|
type = "callable"
|
||||||
def post_request(worker, req, environ):
|
def post_request(worker, req, environ, resp):
|
||||||
pass
|
pass
|
||||||
default = staticmethod(post_request)
|
default = staticmethod(post_request)
|
||||||
desc = """\
|
desc = """\
|
||||||
|
|||||||
@ -74,6 +74,8 @@ class AsyncWorker(base.Worker):
|
|||||||
|
|
||||||
def handle_request(self, listener, req, sock, addr):
|
def handle_request(self, listener, req, sock, addr):
|
||||||
request_start = datetime.now()
|
request_start = datetime.now()
|
||||||
|
environ = {}
|
||||||
|
resp = None
|
||||||
try:
|
try:
|
||||||
self.cfg.pre_request(self, req)
|
self.cfg.pre_request(self, req)
|
||||||
resp, environ = wsgi.create(req, sock, addr,
|
resp, environ = wsgi.create(req, sock, addr,
|
||||||
@ -103,7 +105,7 @@ class AsyncWorker(base.Worker):
|
|||||||
raise StopIteration()
|
raise StopIteration()
|
||||||
finally:
|
finally:
|
||||||
try:
|
try:
|
||||||
self.cfg.post_request(self, req, environ)
|
self.cfg.post_request(self, req, environ, resp)
|
||||||
except:
|
except Exception:
|
||||||
pass
|
self.log.exception("Exception in post_request hook")
|
||||||
return True
|
return True
|
||||||
|
|||||||
@ -107,6 +107,7 @@ class SyncWorker(base.Worker):
|
|||||||
|
|
||||||
def handle_request(self, listener, req, client, addr):
|
def handle_request(self, listener, req, client, addr):
|
||||||
environ = {}
|
environ = {}
|
||||||
|
resp = None
|
||||||
try:
|
try:
|
||||||
self.cfg.pre_request(self, req)
|
self.cfg.pre_request(self, req)
|
||||||
request_start = datetime.now()
|
request_start = datetime.now()
|
||||||
@ -141,6 +142,6 @@ class SyncWorker(base.Worker):
|
|||||||
return
|
return
|
||||||
finally:
|
finally:
|
||||||
try:
|
try:
|
||||||
self.cfg.post_request(self, req, environ)
|
self.cfg.post_request(self, req, environ, resp)
|
||||||
except:
|
except Exception:
|
||||||
pass
|
self.log.exception("Exception in post_request hook")
|
||||||
|
|||||||
@ -192,3 +192,25 @@ def test_cli_overrides_config():
|
|||||||
app = NoConfigApp()
|
app = NoConfigApp()
|
||||||
t.eq(app.cfg.bind, ["blarney"])
|
t.eq(app.cfg.bind, ["blarney"])
|
||||||
t.eq(app.cfg.proc_name, "fooey")
|
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