mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 21:13:36 +00:00
tornado: Swap to early-abort, for fewer long hanging blocks.
This commit is contained in:
committed by
Tim Abbott
parent
39368cad3a
commit
6918556648
@@ -24,66 +24,67 @@ def request_event_queue(user_profile: UserProfile, user_client: Client, apply_ma
|
||||
narrow: Iterable[Sequence[str]]=[],
|
||||
bulk_message_deletion: bool=False) -> Optional[str]:
|
||||
|
||||
if settings.TORNADO_SERVER:
|
||||
tornado_uri = get_tornado_uri(user_profile.realm)
|
||||
req = {'dont_block': 'true',
|
||||
'apply_markdown': ujson.dumps(apply_markdown),
|
||||
'client_gravatar': ujson.dumps(client_gravatar),
|
||||
'slim_presence': ujson.dumps(slim_presence),
|
||||
'all_public_streams': ujson.dumps(all_public_streams),
|
||||
'client': 'internal',
|
||||
'user_profile_id': user_profile.id,
|
||||
'user_client': user_client.name,
|
||||
'narrow': ujson.dumps(narrow),
|
||||
'secret': settings.SHARED_SECRET,
|
||||
'lifespan_secs': queue_lifespan_secs,
|
||||
'bulk_message_deletion': ujson.dumps(bulk_message_deletion)}
|
||||
if not settings.TORNADO_SERVER:
|
||||
return None
|
||||
|
||||
if event_types is not None:
|
||||
req['event_types'] = ujson.dumps(event_types)
|
||||
tornado_uri = get_tornado_uri(user_profile.realm)
|
||||
req = {'dont_block': 'true',
|
||||
'apply_markdown': ujson.dumps(apply_markdown),
|
||||
'client_gravatar': ujson.dumps(client_gravatar),
|
||||
'slim_presence': ujson.dumps(slim_presence),
|
||||
'all_public_streams': ujson.dumps(all_public_streams),
|
||||
'client': 'internal',
|
||||
'user_profile_id': user_profile.id,
|
||||
'user_client': user_client.name,
|
||||
'narrow': ujson.dumps(narrow),
|
||||
'secret': settings.SHARED_SECRET,
|
||||
'lifespan_secs': queue_lifespan_secs,
|
||||
'bulk_message_deletion': ujson.dumps(bulk_message_deletion)}
|
||||
|
||||
try:
|
||||
resp = requests_client.post(tornado_uri + '/api/v1/events/internal',
|
||||
data=req)
|
||||
except requests.adapters.ConnectionError:
|
||||
logging.error('Tornado server does not seem to be running, check %s '
|
||||
'and %s for more information.',
|
||||
settings.ERROR_FILE_LOG_PATH, "tornado.log")
|
||||
raise requests.adapters.ConnectionError(
|
||||
f"Django cannot connect to Tornado server ({tornado_uri}); try restarting")
|
||||
if event_types is not None:
|
||||
req['event_types'] = ujson.dumps(event_types)
|
||||
|
||||
resp.raise_for_status()
|
||||
try:
|
||||
resp = requests_client.post(tornado_uri + '/api/v1/events/internal',
|
||||
data=req)
|
||||
except requests.adapters.ConnectionError:
|
||||
logging.error('Tornado server does not seem to be running, check %s '
|
||||
'and %s for more information.',
|
||||
settings.ERROR_FILE_LOG_PATH, "tornado.log")
|
||||
raise requests.adapters.ConnectionError(
|
||||
f"Django cannot connect to Tornado server ({tornado_uri}); try restarting")
|
||||
|
||||
return resp.json()['queue_id']
|
||||
resp.raise_for_status()
|
||||
|
||||
return None
|
||||
return resp.json()['queue_id']
|
||||
|
||||
def get_user_events(user_profile: UserProfile, queue_id: str, last_event_id: int) -> List[Dict[str, Any]]:
|
||||
if settings.TORNADO_SERVER:
|
||||
tornado_uri = get_tornado_uri(user_profile.realm)
|
||||
post_data: Dict[str, Any] = {
|
||||
'queue_id': queue_id,
|
||||
'last_event_id': last_event_id,
|
||||
'dont_block': 'true',
|
||||
'user_profile_id': user_profile.id,
|
||||
'secret': settings.SHARED_SECRET,
|
||||
'client': 'internal',
|
||||
}
|
||||
resp = requests_client.post(tornado_uri + '/api/v1/events/internal',
|
||||
data=post_data)
|
||||
resp.raise_for_status()
|
||||
if not settings.TORNADO_SERVER:
|
||||
return []
|
||||
|
||||
return resp.json()['events']
|
||||
return []
|
||||
tornado_uri = get_tornado_uri(user_profile.realm)
|
||||
post_data: Dict[str, Any] = {
|
||||
'queue_id': queue_id,
|
||||
'last_event_id': last_event_id,
|
||||
'dont_block': 'true',
|
||||
'user_profile_id': user_profile.id,
|
||||
'secret': settings.SHARED_SECRET,
|
||||
'client': 'internal',
|
||||
}
|
||||
resp = requests_client.post(tornado_uri + '/api/v1/events/internal',
|
||||
data=post_data)
|
||||
resp.raise_for_status()
|
||||
|
||||
return resp.json()['events']
|
||||
|
||||
def send_notification_http(realm: Realm, data: Mapping[str, Any]) -> None:
|
||||
if settings.TORNADO_SERVER and not settings.RUNNING_INSIDE_TORNADO:
|
||||
if not settings.TORNADO_SERVER or settings.RUNNING_INSIDE_TORNADO:
|
||||
process_notification(data)
|
||||
else:
|
||||
tornado_uri = get_tornado_uri(realm)
|
||||
requests_client.post(tornado_uri + '/notify_tornado', data=dict(
|
||||
data = ujson.dumps(data),
|
||||
secret = settings.SHARED_SECRET))
|
||||
else:
|
||||
process_notification(data)
|
||||
|
||||
def send_event(realm: Realm, event: Mapping[str, Any],
|
||||
users: Union[Iterable[int], Iterable[Mapping[str, Any]]]) -> None:
|
||||
|
||||
Reference in New Issue
Block a user