mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 16:37:23 +00:00
run-dev: Switch to asyncio event loop.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
committed by
Alex Vandiver
parent
5d69dafddb
commit
0ef9309e92
@@ -1,5 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import argparse
|
import argparse
|
||||||
|
import asyncio
|
||||||
import os
|
import os
|
||||||
import pwd
|
import pwd
|
||||||
import signal
|
import signal
|
||||||
@@ -17,7 +18,7 @@ from tools.lib import sanity_check
|
|||||||
sanity_check.check_venv(__file__)
|
sanity_check.check_venv(__file__)
|
||||||
|
|
||||||
from tornado import httpclient, httputil, web
|
from tornado import httpclient, httputil, web
|
||||||
from tornado.ioloop import IOLoop
|
from tornado.platform.asyncio import AsyncIOMainLoop
|
||||||
|
|
||||||
from tools.lib.test_script import add_provision_check_override_param, assert_provisioning_status_ok
|
from tools.lib.test_script import add_provision_check_override_param, assert_provisioning_status_ok
|
||||||
|
|
||||||
@@ -197,7 +198,7 @@ def transform_url(protocol: str, path: str, query: str, target_port: int, target
|
|||||||
return newpath
|
return newpath
|
||||||
|
|
||||||
|
|
||||||
client = httpclient.AsyncHTTPClient()
|
client: httpclient.AsyncHTTPClient
|
||||||
|
|
||||||
|
|
||||||
class BaseHandler(web.RequestHandler):
|
class BaseHandler(web.RequestHandler):
|
||||||
@@ -317,14 +318,6 @@ class Application(web.Application):
|
|||||||
super().log_request(handler)
|
super().log_request(handler)
|
||||||
|
|
||||||
|
|
||||||
def shutdown_handler(*args: Any, **kwargs: Any) -> None:
|
|
||||||
io_loop = IOLoop.instance()
|
|
||||||
if io_loop._callbacks:
|
|
||||||
io_loop.call_later(1, shutdown_handler)
|
|
||||||
else:
|
|
||||||
io_loop.stop()
|
|
||||||
|
|
||||||
|
|
||||||
def print_listeners() -> None:
|
def print_listeners() -> None:
|
||||||
# Since we can't import settings from here, we duplicate some
|
# Since we can't import settings from here, we duplicate some
|
||||||
# EXTERNAL_HOST logic from dev_settings.py.
|
# EXTERNAL_HOST logic from dev_settings.py.
|
||||||
@@ -354,7 +347,12 @@ def print_listeners() -> None:
|
|||||||
|
|
||||||
children = []
|
children = []
|
||||||
|
|
||||||
try:
|
|
||||||
|
async def serve() -> None:
|
||||||
|
global client
|
||||||
|
|
||||||
|
AsyncIOMainLoop().install()
|
||||||
|
|
||||||
if options.test:
|
if options.test:
|
||||||
do_one_time_webpack_compile()
|
do_one_time_webpack_compile()
|
||||||
else:
|
else:
|
||||||
@@ -363,6 +361,7 @@ try:
|
|||||||
for cmd in server_processes():
|
for cmd in server_processes():
|
||||||
children.append(subprocess.Popen(cmd))
|
children.append(subprocess.Popen(cmd))
|
||||||
|
|
||||||
|
client = httpclient.AsyncHTTPClient()
|
||||||
app = Application(enable_logging=options.enable_tornado_logging)
|
app = Application(enable_logging=options.enable_tornado_logging)
|
||||||
try:
|
try:
|
||||||
app.listen(proxy_port, address=options.interface)
|
app.listen(proxy_port, address=options.interface)
|
||||||
@@ -373,10 +372,14 @@ try:
|
|||||||
|
|
||||||
print_listeners()
|
print_listeners()
|
||||||
|
|
||||||
ioloop = IOLoop.instance()
|
|
||||||
|
loop = asyncio.new_event_loop()
|
||||||
|
|
||||||
|
try:
|
||||||
|
loop.run_until_complete(serve())
|
||||||
for s in (signal.SIGINT, signal.SIGTERM):
|
for s in (signal.SIGINT, signal.SIGTERM):
|
||||||
signal.signal(s, shutdown_handler)
|
loop.add_signal_handler(s, loop.stop)
|
||||||
ioloop.start()
|
loop.run_forever()
|
||||||
finally:
|
finally:
|
||||||
for child in children:
|
for child in children:
|
||||||
child.terminate()
|
child.terminate()
|
||||||
|
|||||||
Reference in New Issue
Block a user