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

@ -109,14 +109,16 @@ class AsyncWorker(base.Worker):
if self.is_already_handled(respiter): if self.is_already_handled(respiter):
return False return False
try: try:
if isinstance(respiter, environ['wsgi.file_wrapper']): try:
resp.write_file(respiter) if isinstance(respiter, environ['wsgi.file_wrapper']):
else: resp.write_file(respiter)
for item in respiter: else:
resp.write(item) for item in respiter:
resp.close() resp.write(item)
request_time = datetime.now() - request_start resp.close()
self.log.access(resp, req, environ, request_time) finally:
request_time = datetime.now() - request_start
self.log.access(resp, req, environ, request_time)
finally: finally:
if hasattr(respiter, "close"): if hasattr(respiter, "close"):
respiter.close() respiter.close()

View File

@ -333,15 +333,17 @@ class ThreadWorker(base.Worker):
respiter = self.wsgi(environ, resp.start_response) respiter = self.wsgi(environ, resp.start_response)
try: try:
if isinstance(respiter, environ['wsgi.file_wrapper']): try:
resp.write_file(respiter) if isinstance(respiter, environ['wsgi.file_wrapper']):
else: resp.write_file(respiter)
for item in respiter: else:
resp.write(item) for item in respiter:
resp.write(item)
resp.close() resp.close()
request_time = datetime.now() - request_start finally:
self.log.access(resp, req, environ, request_time) request_time = datetime.now() - request_start
self.log.access(resp, req, environ, request_time)
finally: finally:
if hasattr(respiter, "close"): if hasattr(respiter, "close"):
respiter.close() respiter.close()

View File

@ -177,14 +177,16 @@ class SyncWorker(base.Worker):
self.alive = False self.alive = False
respiter = self.wsgi(environ, resp.start_response) respiter = self.wsgi(environ, resp.start_response)
try: try:
if isinstance(respiter, environ['wsgi.file_wrapper']): try:
resp.write_file(respiter) if isinstance(respiter, environ['wsgi.file_wrapper']):
else: resp.write_file(respiter)
for item in respiter: else:
resp.write(item) for item in respiter:
resp.close() resp.write(item)
request_time = datetime.now() - request_start resp.close()
self.log.access(resp, req, environ, request_time) finally:
request_time = datetime.now() - request_start
self.log.access(resp, req, environ, request_time)
finally: finally:
if hasattr(respiter, "close"): if hasattr(respiter, "close"):
respiter.close() respiter.close()