mirror of https://github.com/zulip/zulip.git
tornado: Fix autoreload for Tornado 6.4 changes.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
a1fa969693
commit
cf16ddd4d6
|
@ -92,10 +92,17 @@ if options.test:
|
|||
settings_module = "zproject.test_settings"
|
||||
# Don't auto-reload when running Puppeteer tests
|
||||
runserver_args = ["--noreload"]
|
||||
tornado_autoreload = []
|
||||
runtornado_command = ["./manage.py", "runtornado"]
|
||||
else:
|
||||
settings_module = "zproject.settings"
|
||||
tornado_autoreload = ["-m", "tornado.autoreload"]
|
||||
runtornado_command = [
|
||||
"-m",
|
||||
"tornado.autoreload",
|
||||
"--until-success",
|
||||
"./manage.py",
|
||||
"runtornado",
|
||||
"--autoreload",
|
||||
]
|
||||
|
||||
manage_args = [f"--settings={settings_module}"]
|
||||
os.environ["DJANGO_SETTINGS_MODULE"] = settings_module
|
||||
|
@ -148,9 +155,7 @@ def server_processes() -> List[List[str]]:
|
|||
"env",
|
||||
"PYTHONUNBUFFERED=1",
|
||||
"python3",
|
||||
*tornado_autoreload,
|
||||
"./manage.py",
|
||||
"runtornado",
|
||||
*runtornado_command,
|
||||
*manage_args,
|
||||
f"127.0.0.1:{tornado_port}",
|
||||
],
|
||||
|
|
|
@ -8,12 +8,9 @@ from urllib.parse import SplitResult
|
|||
from asgiref.sync import async_to_sync, sync_to_async
|
||||
from django.conf import settings
|
||||
from django.core.management.base import BaseCommand, CommandError, CommandParser
|
||||
from tornado import autoreload
|
||||
from tornado.platform.asyncio import AsyncIOMainLoop
|
||||
from typing_extensions import override
|
||||
|
||||
import __main__
|
||||
|
||||
settings.RUNNING_INSIDE_TORNADO = True
|
||||
if settings.PRODUCTION:
|
||||
settings.SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
|
||||
|
@ -42,6 +39,7 @@ class Command(BaseCommand):
|
|||
|
||||
@override
|
||||
def add_arguments(self, parser: CommandParser) -> None:
|
||||
parser.add_argument("--autoreload", action="store_true", help="Enable Tornado autoreload")
|
||||
parser.add_argument(
|
||||
"addrport",
|
||||
help="[port number or ipaddr:port]",
|
||||
|
@ -118,7 +116,7 @@ class Command(BaseCommand):
|
|||
)
|
||||
|
||||
# Application is an instance of Django's standard wsgi handler.
|
||||
application = create_tornado_application()
|
||||
application = create_tornado_application(autoreload=options["autoreload"])
|
||||
|
||||
# start tornado web server in single-threaded mode
|
||||
http_server = httpserver.HTTPServer(application, xheaders=True)
|
||||
|
@ -135,14 +133,6 @@ class Command(BaseCommand):
|
|||
if settings.USING_RABBITMQ:
|
||||
setup_tornado_rabbitmq(queue_client)
|
||||
|
||||
if hasattr(__main__, "add_reload_hook"):
|
||||
autoreload.start()
|
||||
|
||||
await stop_fut
|
||||
|
||||
# Monkey patch tornado.autoreload to prevent it from continuing
|
||||
# to watch for changes after catching our SystemExit. Otherwise
|
||||
# the user needs to press Ctrl+C twice.
|
||||
__main__.wait = lambda: None
|
||||
|
||||
async_to_sync(inner_run, force_new_loop=True)()
|
||||
|
|
|
@ -12,7 +12,7 @@ def setup_tornado_rabbitmq(queue_client: TornadoQueueClient) -> None: # nocover
|
|||
autoreload.add_reload_hook(lambda: queue_client.close())
|
||||
|
||||
|
||||
def create_tornado_application() -> tornado.web.Application:
|
||||
def create_tornado_application(*, autoreload: bool = False) -> tornado.web.Application:
|
||||
django_handler = BaseHandler()
|
||||
django_handler.load_middleware()
|
||||
|
||||
|
@ -26,7 +26,7 @@ def create_tornado_application() -> tornado.web.Application:
|
|||
return tornado.web.Application(
|
||||
[(url, AsyncDjangoHandler, dict(django_handler=django_handler)) for url in urls],
|
||||
debug=settings.DEBUG,
|
||||
autoreload=False,
|
||||
autoreload=autoreload,
|
||||
# Disable Tornado's own request logging, since we have our own
|
||||
log_function=lambda x: None,
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue