2016-11-27 04:56:26 +01:00
|
|
|
from __future__ import absolute_import
|
|
|
|
from __future__ import print_function
|
|
|
|
|
2017-07-21 06:55:25 +02:00
|
|
|
import atexit
|
|
|
|
|
2016-11-27 04:56:26 +01:00
|
|
|
from django.conf import settings
|
|
|
|
|
|
|
|
from zerver.tornado.handlers import AsyncDjangoHandler
|
2016-11-27 06:27:21 +01:00
|
|
|
from zerver.tornado.socket import get_sockjs_router
|
2017-07-21 06:55:25 +02:00
|
|
|
from zerver.lib.queue import get_queue_client
|
2016-11-27 04:56:26 +01:00
|
|
|
|
2017-07-19 07:35:48 +02:00
|
|
|
import tornado.autoreload
|
2016-11-27 04:56:26 +01:00
|
|
|
import tornado.web
|
|
|
|
|
2017-07-21 06:55:25 +02:00
|
|
|
def setup_tornado_rabbitmq():
|
|
|
|
# type: () -> None
|
|
|
|
# When tornado is shut down, disconnect cleanly from rabbitmq
|
|
|
|
if settings.USING_RABBITMQ:
|
|
|
|
queue_client = get_queue_client()
|
|
|
|
atexit.register(lambda: queue_client.close())
|
2017-07-19 07:35:48 +02:00
|
|
|
tornado.autoreload.add_reload_hook(lambda: queue_client.close()) # type: ignore # TODO: Fix missing tornado.autoreload stub
|
2017-07-21 06:55:25 +02:00
|
|
|
|
2016-11-27 04:56:26 +01:00
|
|
|
def create_tornado_application():
|
|
|
|
# type: () -> tornado.web.Application
|
|
|
|
urls = (r"/notify_tornado",
|
|
|
|
r"/json/events",
|
|
|
|
r"/api/v1/events",
|
2016-12-01 06:16:45 +01:00
|
|
|
)
|
2016-11-27 04:56:26 +01:00
|
|
|
|
|
|
|
# Application is an instance of Django's standard wsgi handler.
|
2017-01-24 05:50:04 +01:00
|
|
|
return tornado.web.Application(([(url, AsyncDjangoHandler) for url in urls] +
|
|
|
|
get_sockjs_router().urls),
|
2016-11-27 04:56:26 +01:00
|
|
|
debug=settings.DEBUG,
|
2017-03-18 04:43:27 +01:00
|
|
|
autoreload=settings.AUTORELOAD,
|
2016-11-27 04:56:26 +01:00
|
|
|
# Disable Tornado's own request logging, since we have our own
|
|
|
|
log_function=lambda x: None)
|