def serve_many(workers=1):
# thank you sanic
workers = min(workers, multiprocessing.cpu_count())
event = multiprocessing.Event()
signal(SIGINT, lambda *_: event.set())
signal(SIGTERM, lambda *_: event.set())
processes = []
kwargs = dict(reuse_port=True)
for _ in range(workers):
# noinspection PyArgumentList
process = multiprocessing.Process(target=serve, kwargs=kwargs,
daemon=True)
process.start()
print('Started subprocess:', process.name, process.pid)
processes.append(process)
with contextlib.suppress(Exception):
while not event.is_set():
time.sleep(0.5)
[process.terminate() for process in processes]
[process.join() for process in processes]
评论列表
文章目录