Log access even when connection is closed

This commit is contained in:
Ilya Konstantinov 2020-07-30 10:33:55 -04:00 committed by Ilya Priven
parent b7242beacd
commit 6d4faab6d6
3 changed files with 30 additions and 24 deletions

View File

@ -108,6 +108,7 @@ class AsyncWorker(base.Worker):
respiter = self.wsgi(environ, resp.start_response) respiter = self.wsgi(environ, resp.start_response)
if self.is_already_handled(respiter): if self.is_already_handled(respiter):
return False return False
try:
try: try:
if isinstance(respiter, environ['wsgi.file_wrapper']): if isinstance(respiter, environ['wsgi.file_wrapper']):
resp.write_file(respiter) resp.write_file(respiter)
@ -115,6 +116,7 @@ class AsyncWorker(base.Worker):
for item in respiter: for item in respiter:
resp.write(item) resp.write(item)
resp.close() resp.close()
finally:
request_time = datetime.now() - request_start request_time = datetime.now() - request_start
self.log.access(resp, req, environ, request_time) self.log.access(resp, req, environ, request_time)
finally: finally:

View File

@ -332,6 +332,7 @@ class ThreadWorker(base.Worker):
resp.force_close() resp.force_close()
respiter = self.wsgi(environ, resp.start_response) respiter = self.wsgi(environ, resp.start_response)
try:
try: try:
if isinstance(respiter, environ['wsgi.file_wrapper']): if isinstance(respiter, environ['wsgi.file_wrapper']):
resp.write_file(respiter) resp.write_file(respiter)
@ -340,6 +341,7 @@ class ThreadWorker(base.Worker):
resp.write(item) resp.write(item)
resp.close() resp.close()
finally:
request_time = datetime.now() - request_start request_time = datetime.now() - request_start
self.log.access(resp, req, environ, request_time) self.log.access(resp, req, environ, request_time)
finally: finally:

View File

@ -176,6 +176,7 @@ class SyncWorker(base.Worker):
self.log.info("Autorestarting worker after current request.") self.log.info("Autorestarting worker after current request.")
self.alive = False self.alive = False
respiter = self.wsgi(environ, resp.start_response) respiter = self.wsgi(environ, resp.start_response)
try:
try: try:
if isinstance(respiter, environ['wsgi.file_wrapper']): if isinstance(respiter, environ['wsgi.file_wrapper']):
resp.write_file(respiter) resp.write_file(respiter)
@ -183,6 +184,7 @@ class SyncWorker(base.Worker):
for item in respiter: for item in respiter:
resp.write(item) resp.write(item)
resp.close() resp.close()
finally:
request_time = datetime.now() - request_start request_time = datetime.now() - request_start
self.log.access(resp, req, environ, request_time) self.log.access(resp, req, environ, request_time)
finally: finally: