mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
We previously forked tornado.autoreload to work around a problem where it would crash if you introduce a syntax error and not recover if you fix it (https://github.com/tornadoweb/tornado/issues/2398). A much more maintainable workaround for that issue, at least in current Tornado, is to use tornado.autoreload as the main module. Signed-off-by: Anders Kaseorg <anders@zulip.com>
34 lines
971 B
Python
34 lines
971 B
Python
import atexit
|
|
|
|
import tornado.web
|
|
from django.conf import settings
|
|
from tornado import autoreload
|
|
|
|
from zerver.lib.queue import get_queue_client
|
|
from zerver.tornado.handlers import AsyncDjangoHandler
|
|
|
|
|
|
def setup_tornado_rabbitmq() -> None: # nocoverage
|
|
# When tornado is shut down, disconnect cleanly from RabbitMQ
|
|
if settings.USING_RABBITMQ:
|
|
queue_client = get_queue_client()
|
|
atexit.register(lambda: queue_client.close())
|
|
autoreload.add_reload_hook(lambda: queue_client.close())
|
|
|
|
|
|
def create_tornado_application() -> tornado.web.Application:
|
|
urls = (
|
|
r"/notify_tornado",
|
|
r"/json/events",
|
|
r"/api/v1/events",
|
|
r"/api/v1/events/internal",
|
|
)
|
|
|
|
return tornado.web.Application(
|
|
[(url, AsyncDjangoHandler) for url in urls],
|
|
debug=settings.DEBUG,
|
|
autoreload=False,
|
|
# Disable Tornado's own request logging, since we have our own
|
|
log_function=lambda x: None,
|
|
)
|