remove stop_event

This commit is contained in:
Raphael Deem 2017-02-26 16:31:39 -08:00
parent 13f81e9a6f
commit 2dca53a696
2 changed files with 30 additions and 13 deletions

View File

@ -464,19 +464,24 @@ class Sanic:
:param protocol: Subclass of asyncio protocol class :param protocol: Subclass of asyncio protocol class
:return: Nothing :return: Nothing
""" """
if stop_event is not None:
if debug:
warnings.simplefilter('default')
warnings.warn("stop_event will be removed from future versions.",
DeprecationWarning)
server_settings = self._helper( server_settings = self._helper(
host=host, port=port, debug=debug, before_start=before_start, host=host, port=port, debug=debug, before_start=before_start,
after_start=after_start, before_stop=before_stop, after_start=after_start, before_stop=before_stop,
after_stop=after_stop, ssl=ssl, sock=sock, workers=workers, after_stop=after_stop, ssl=ssl, sock=sock, workers=workers,
loop=loop, protocol=protocol, backlog=backlog, loop=loop, protocol=protocol, backlog=backlog,
stop_event=stop_event, register_sys_signals=register_sys_signals) register_sys_signals=register_sys_signals)
try: try:
self.is_running = True self.is_running = True
if workers == 1: if workers == 1:
serve(**server_settings) serve(**server_settings)
else: else:
serve_multiple(server_settings, workers, stop_event) serve_multiple(server_settings, workers)
except: except:
log.exception( log.exception(
'Experienced exception while trying to serve') 'Experienced exception while trying to serve')
@ -498,13 +503,17 @@ class Sanic:
NOTE: This does not support multiprocessing and is not the preferred NOTE: This does not support multiprocessing and is not the preferred
way to run a Sanic application. way to run a Sanic application.
""" """
if stop_event is not None:
if debug:
warnings.simplefilter('default')
warnings.warn("stop_event will be removed from future versions.",
DeprecationWarning)
server_settings = self._helper( server_settings = self._helper(
host=host, port=port, debug=debug, before_start=before_start, host=host, port=port, debug=debug, before_start=before_start,
after_start=after_start, before_stop=before_stop, after_start=after_start, before_stop=before_stop,
after_stop=after_stop, ssl=ssl, sock=sock, after_stop=after_stop, ssl=ssl, sock=sock,
loop=loop or get_event_loop(), protocol=protocol, loop=loop or get_event_loop(), protocol=protocol,
backlog=backlog, stop_event=stop_event, backlog=backlog, run_async=True)
run_async=True)
return await serve(**server_settings) return await serve(**server_settings)
@ -514,7 +523,11 @@ class Sanic:
protocol=HttpProtocol, backlog=100, stop_event=None, protocol=HttpProtocol, backlog=100, stop_event=None,
register_sys_signals=True, run_async=False): register_sys_signals=True, run_async=False):
"""Helper function used by `run` and `create_server`.""" """Helper function used by `run` and `create_server`."""
if stop_event is not None:
if debug:
warnings.simplefilter('default')
warnings.warn("stop_event will be removed from future versions.",
DeprecationWarning)
if loop is not None: if loop is not None:
if debug: if debug:
warnings.simplefilter('default') warnings.simplefilter('default')

View File

@ -4,10 +4,13 @@ import traceback
import warnings import warnings
from functools import partial from functools import partial
from inspect import isawaitable from inspect import isawaitable
from multiprocessing import Process, Event from multiprocessing import Process
from os import set_inheritable from os import set_inheritable
from signal import SIGTERM, SIGINT from signal import (
from signal import signal as signal_func SIGTERM, SIGINT,
signal as signal_func,
Signals
)
from socket import socket, SOL_SOCKET, SO_REUSEADDR from socket import socket, SOL_SOCKET, SO_REUSEADDR
from time import time from time import time
@ -379,7 +382,7 @@ def serve(host, port, request_handler, error_handler, before_start=None,
loop.close() loop.close()
def serve_multiple(server_settings, workers, stop_event=None): def serve_multiple(server_settings, workers):
"""Start multiple server processes simultaneously. Stop on interrupt """Start multiple server processes simultaneously. Stop on interrupt
and terminate signals, and drain connections when complete. and terminate signals, and drain connections when complete.
@ -404,11 +407,12 @@ def serve_multiple(server_settings, workers, stop_event=None):
server_settings['host'] = None server_settings['host'] = None
server_settings['port'] = None server_settings['port'] = None
if stop_event is None: def sig_handler(signal, frame):
stop_event = Event() log.info("Received signal {}. Shutting down.".format(
Signals(signal).name))
signal_func(SIGINT, lambda s, f: stop_event.set()) signal_func(SIGINT, lambda s, f: sig_handler(s, f))
signal_func(SIGTERM, lambda s, f: stop_event.set()) signal_func(SIGTERM, lambda s, f: sig_handler(s, f))
processes = [] processes = []
for _ in range(workers): for _ in range(workers):