mirror of https://github.com/zulip/zulip.git
tornado: Use spiffy new `call_later` rather than `add_timeout`.
This method was new in Tornado 4.0. It saves us from having to get the time ourselves and do the arithmetic -- which not only makes the code a bit shorter, but also easier to get right. Tornado docs (see http://www.tornadoweb.org/en/stable/ioloop.html) say we should have been getting the time from `ioloop.time()` rather than hardcoding `time.time()`, because the loop could e.g. be running on the `time.monotonic()` clock.
This commit is contained in:
parent
73886f57d2
commit
c32b16715d
|
@ -380,7 +380,7 @@ def shutdown_handler(*args, **kwargs):
|
||||||
# type: (*Any, **Any) -> None
|
# type: (*Any, **Any) -> None
|
||||||
io_loop = IOLoop.instance()
|
io_loop = IOLoop.instance()
|
||||||
if io_loop._callbacks:
|
if io_loop._callbacks:
|
||||||
io_loop.add_timeout(time.time() + 1, shutdown_handler)
|
io_loop.call_later(1, shutdown_handler)
|
||||||
else:
|
else:
|
||||||
io_loop.stop()
|
io_loop.stop()
|
||||||
|
|
||||||
|
|
|
@ -221,9 +221,9 @@ class TornadoQueueClient(SimpleQueueClient):
|
||||||
self._reconnect()
|
self._reconnect()
|
||||||
except pika.exceptions.AMQPConnectionError:
|
except pika.exceptions.AMQPConnectionError:
|
||||||
self.log.critical("Failed to reconnect to RabbitMQ, retrying...")
|
self.log.critical("Failed to reconnect to RabbitMQ, retrying...")
|
||||||
ioloop.IOLoop.instance().add_timeout(time.time() + retry_seconds, on_timeout)
|
ioloop.IOLoop.instance().call_later(retry_seconds, on_timeout)
|
||||||
|
|
||||||
ioloop.IOLoop.instance().add_timeout(time.time() + retry_seconds, on_timeout)
|
ioloop.IOLoop.instance().call_later(retry_seconds, on_timeout)
|
||||||
|
|
||||||
def ensure_queue(self, queue_name: str, callback: Callable[[], None]) -> None:
|
def ensure_queue(self, queue_name: str, callback: Callable[[], None]) -> None:
|
||||||
def finish(frame: Any) -> None:
|
def finish(frame: Any) -> None:
|
||||||
|
|
|
@ -78,7 +78,7 @@ class ClientDescriptor:
|
||||||
self.client_gravatar = client_gravatar
|
self.client_gravatar = client_gravatar
|
||||||
self.all_public_streams = all_public_streams
|
self.all_public_streams = all_public_streams
|
||||||
self.client_type_name = client_type_name
|
self.client_type_name = client_type_name
|
||||||
self._timeout_handle = None # type: Any # TODO: should be return type of ioloop.add_timeout
|
self._timeout_handle = None # type: Any # TODO: should be return type of ioloop.call_later
|
||||||
self.narrow = narrow
|
self.narrow = narrow
|
||||||
self.narrow_filter = build_narrow_filter(narrow)
|
self.narrow_filter = build_narrow_filter(narrow)
|
||||||
|
|
||||||
|
@ -189,9 +189,9 @@ class ClientDescriptor:
|
||||||
# All clients get heartbeat events
|
# All clients get heartbeat events
|
||||||
self.add_event(dict(type='heartbeat'))
|
self.add_event(dict(type='heartbeat'))
|
||||||
ioloop = tornado.ioloop.IOLoop.instance()
|
ioloop = tornado.ioloop.IOLoop.instance()
|
||||||
heartbeat_time = time.time() + HEARTBEAT_MIN_FREQ_SECS + random.randint(0, 10)
|
interval = HEARTBEAT_MIN_FREQ_SECS + random.randint(0, 10)
|
||||||
if self.client_type_name != 'API: heartbeat test':
|
if self.client_type_name != 'API: heartbeat test':
|
||||||
self._timeout_handle = ioloop.add_timeout(heartbeat_time, timeout_callback)
|
self._timeout_handle = ioloop.call_later(interval, timeout_callback)
|
||||||
|
|
||||||
def disconnect_handler(self, client_closed: bool=False) -> None:
|
def disconnect_handler(self, client_closed: bool=False) -> None:
|
||||||
if self.current_handler_id:
|
if self.current_handler_id:
|
||||||
|
|
|
@ -103,7 +103,7 @@ class SocketConnection(sockjs.tornado.SockJSConnection):
|
||||||
self.close_info = CloseErrorInfo(408, "Timeout while waiting for authentication")
|
self.close_info = CloseErrorInfo(408, "Timeout while waiting for authentication")
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
self.timeout_handle = ioloop.add_timeout(time.time() + 10, auth_timeout)
|
self.timeout_handle = ioloop.call_later(10, auth_timeout)
|
||||||
write_log_line(log_data, path='/socket/open', method='SOCKET',
|
write_log_line(log_data, path='/socket/open', method='SOCKET',
|
||||||
remote_ip=info.ip, email='unknown', client_name='?')
|
remote_ip=info.ip, email='unknown', client_name='?')
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue