mirror of https://github.com/zulip/zulip.git
tornado: Extract functions for Tornado queue names.
This moves all control for what queue to use for which realm in our Tornado system to just the sharding.py file; no actual sharding is done yet.
This commit is contained in:
parent
152c44b6d2
commit
0cac7e1cd3
|
@ -54,13 +54,14 @@ queues = {
|
||||||
'email_senders',
|
'email_senders',
|
||||||
'missedmessage_mobile_notifications',
|
'missedmessage_mobile_notifications',
|
||||||
'outgoing_webhooks',
|
'outgoing_webhooks',
|
||||||
'notify_tornado',
|
|
||||||
'signups',
|
'signups',
|
||||||
'slow_queries',
|
'slow_queries',
|
||||||
'tornado_return',
|
|
||||||
'user_activity'
|
'user_activity'
|
||||||
'user_activity_interval',
|
'user_activity_interval',
|
||||||
'user_presence',
|
'user_presence',
|
||||||
|
# These queues may not be present if settings.TORNADO_PROCESSES > 1
|
||||||
|
'notify_tornado',
|
||||||
|
'tornado_return',
|
||||||
}
|
}
|
||||||
|
|
||||||
for queue_name in queues:
|
for queue_name in queues:
|
||||||
|
|
|
@ -25,6 +25,7 @@ from zerver.tornado.application import create_tornado_application, \
|
||||||
from zerver.tornado.autoreload import start as zulip_autoreload_start
|
from zerver.tornado.autoreload import start as zulip_autoreload_start
|
||||||
from zerver.tornado.event_queue import add_client_gc_hook, \
|
from zerver.tornado.event_queue import add_client_gc_hook, \
|
||||||
missedmessage_hook, process_notification, setup_event_queue
|
missedmessage_hook, process_notification, setup_event_queue
|
||||||
|
from zerver.tornado.sharding import notify_tornado_queue_name, tornado_return_queue_name
|
||||||
from zerver.tornado.socket import respond_send_message
|
from zerver.tornado.socket import respond_send_message
|
||||||
|
|
||||||
if settings.USING_RABBITMQ:
|
if settings.USING_RABBITMQ:
|
||||||
|
@ -90,8 +91,10 @@ class Command(BaseCommand):
|
||||||
if settings.USING_RABBITMQ:
|
if settings.USING_RABBITMQ:
|
||||||
queue_client = get_queue_client()
|
queue_client = get_queue_client()
|
||||||
# Process notifications received via RabbitMQ
|
# Process notifications received via RabbitMQ
|
||||||
queue_client.register_json_consumer('notify_tornado', process_notification)
|
queue_client.register_json_consumer(notify_tornado_queue_name(int(port)),
|
||||||
queue_client.register_json_consumer('tornado_return', respond_send_message)
|
process_notification)
|
||||||
|
queue_client.register_json_consumer(tornado_return_queue_name(int(port)),
|
||||||
|
respond_send_message)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Application is an instance of Django's standard wsgi handler.
|
# Application is an instance of Django's standard wsgi handler.
|
||||||
|
|
|
@ -30,7 +30,8 @@ from zerver.lib.queue import queue_json_publish
|
||||||
from zerver.lib.request import JsonableError
|
from zerver.lib.request import JsonableError
|
||||||
from zerver.tornado.descriptors import clear_descriptor_by_handler_id, set_descriptor_by_handler_id
|
from zerver.tornado.descriptors import clear_descriptor_by_handler_id, set_descriptor_by_handler_id
|
||||||
from zerver.tornado.exceptions import BadEventQueueIdError
|
from zerver.tornado.exceptions import BadEventQueueIdError
|
||||||
from zerver.tornado.sharding import get_tornado_uri
|
from zerver.tornado.sharding import get_tornado_uri, get_tornado_port, \
|
||||||
|
notify_tornado_queue_name, tornado_return_queue_name
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
requests_client = requests.Session()
|
requests_client = requests.Session()
|
||||||
|
@ -1005,6 +1006,7 @@ def send_event(realm: Realm, event: Mapping[str, Any],
|
||||||
"""`users` is a list of user IDs, or in the case of `message` type
|
"""`users` is a list of user IDs, or in the case of `message` type
|
||||||
events, a list of dicts describing the users and metadata about
|
events, a list of dicts describing the users and metadata about
|
||||||
the user/message pair."""
|
the user/message pair."""
|
||||||
queue_json_publish("notify_tornado",
|
port = get_tornado_port(realm)
|
||||||
|
queue_json_publish(notify_tornado_queue_name(port),
|
||||||
dict(event=event, users=users),
|
dict(event=event, users=users),
|
||||||
lambda *args, **kwargs: send_notification_http(realm, *args, **kwargs))
|
lambda *args, **kwargs: send_notification_http(realm, *args, **kwargs))
|
||||||
|
|
|
@ -13,3 +13,13 @@ def get_tornado_uri(realm: Realm) -> str:
|
||||||
|
|
||||||
port = get_tornado_port(realm)
|
port = get_tornado_port(realm)
|
||||||
return "http://127.0.0.1:%d" % (port,)
|
return "http://127.0.0.1:%d" % (port,)
|
||||||
|
|
||||||
|
def notify_tornado_queue_name(port: int) -> str:
|
||||||
|
if settings.TORNADO_PROCESSES == 1:
|
||||||
|
return "notify_tornado"
|
||||||
|
return "notify_tornado_port_%d" % (port,)
|
||||||
|
|
||||||
|
def tornado_return_queue_name(port: int) -> str:
|
||||||
|
if settings.TORNADO_PROCESSES == 1:
|
||||||
|
return "tornado_return"
|
||||||
|
return "tornado_return_port_%d" % (port,)
|
||||||
|
|
|
@ -29,6 +29,7 @@ from zerver.lib.redis_utils import get_redis_client
|
||||||
from zerver.lib.sessions import get_session_user
|
from zerver.lib.sessions import get_session_user
|
||||||
from zerver.tornado.event_queue import get_client_descriptor
|
from zerver.tornado.event_queue import get_client_descriptor
|
||||||
from zerver.tornado.exceptions import BadEventQueueIdError
|
from zerver.tornado.exceptions import BadEventQueueIdError
|
||||||
|
from zerver.tornado.sharding import tornado_return_queue_name
|
||||||
|
|
||||||
logger = logging.getLogger('zulip.socket')
|
logger = logging.getLogger('zulip.socket')
|
||||||
|
|
||||||
|
@ -220,7 +221,7 @@ class SocketConnection(sockjs.tornado.SockJSConnection):
|
||||||
req_id=msg['req_id'],
|
req_id=msg['req_id'],
|
||||||
server_meta=dict(user_id=self.session.user_profile.id,
|
server_meta=dict(user_id=self.session.user_profile.id,
|
||||||
client_id=self.client_id,
|
client_id=self.client_id,
|
||||||
return_queue="tornado_return",
|
return_queue=tornado_return_queue_name(self.port),
|
||||||
log_data=log_data,
|
log_data=log_data,
|
||||||
request_environ=request_environ)))
|
request_environ=request_environ)))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue