allow disabling keep alive

This commit is contained in:
Raphael Deem
2017-04-16 21:39:18 -07:00
parent f6d4a06661
commit 5ddb0488f2
3 changed files with 15 additions and 8 deletions

View File

@@ -70,7 +70,8 @@ class HttpProtocol(asyncio.Protocol):
def __init__(self, *, loop, request_handler, error_handler,
signal=Signal(), connections=set(), request_timeout=60,
request_max_size=None, request_class=None):
request_max_size=None, request_class=None,
no_keep_alive=False):
self.loop = loop
self.transport = None
self.request = None
@@ -88,10 +89,13 @@ class HttpProtocol(asyncio.Protocol):
self._timeout_handler = None
self._last_request_time = None
self._request_handler_task = None
self._no_keep_alive = no_keep_alive
@property
def keep_alive(self):
return self.parser.should_keep_alive() and not self.signal.stopped
return (not self._no_keep_alive
and not self.signal.stopped
and self.parser.should_keep_alive())
# -------------------------------------------- #
# Connection
@@ -322,7 +326,7 @@ def serve(host, port, request_handler, error_handler, before_start=None,
request_timeout=60, ssl=None, sock=None, request_max_size=None,
reuse_port=False, loop=None, protocol=HttpProtocol, backlog=100,
register_sys_signals=True, run_async=False, connections=None,
signal=Signal(), request_class=None):
signal=Signal(), request_class=None, no_keep_alive=False):
"""Start asynchronous HTTP Server on an individual process.
:param host: Address to host on
@@ -370,6 +374,7 @@ def serve(host, port, request_handler, error_handler, before_start=None,
request_timeout=request_timeout,
request_max_size=request_max_size,
request_class=request_class,
no_keep_alive=no_keep_alive,
)
server_coroutine = loop.create_server(