diff --git a/jupyterhub/spawner.py b/jupyterhub/spawner.py index 137e6f78..274e407b 100644 --- a/jupyterhub/spawner.py +++ b/jupyterhub/spawner.py @@ -252,7 +252,7 @@ class Spawner(LoggingConfigurable): if status is not None: break else: - yield gen.Task(loop.add_timeout, loop.time() + self.death_interval) + yield gen.sleep(self.death_interval) def _try_setcwd(path): """Try to set CWD, walking up and ultimately falling back to a temp dir""" diff --git a/jupyterhub/tests/mocking.py b/jupyterhub/tests/mocking.py index bec40c7c..43411483 100644 --- a/jupyterhub/tests/mocking.py +++ b/jupyterhub/tests/mocking.py @@ -53,12 +53,12 @@ class SlowSpawner(MockSpawner): @gen.coroutine def start(self): - yield gen.Task(IOLoop.current().add_timeout, timedelta(seconds=2)) + yield gen.sleep(2) yield super().start() @gen.coroutine def stop(self): - yield gen.Task(IOLoop.current().add_timeout, timedelta(seconds=2)) + yield gen.sleep(2) yield super().stop() diff --git a/jupyterhub/tests/test_api.py b/jupyterhub/tests/test_api.py index dc7facdf..117b5644 100644 --- a/jupyterhub/tests/test_api.py +++ b/jupyterhub/tests/test_api.py @@ -363,11 +363,10 @@ def test_slow_spawn(app, io_loop): assert app_user.spawn_pending assert not app_user.stop_pending - dt = timedelta(seconds=0.1) @gen.coroutine def wait_spawn(): while app_user.spawn_pending: - yield gen.Task(io_loop.add_timeout, dt) + yield gen.sleep(0.1) io_loop.run_sync(wait_spawn) assert not app_user.spawn_pending @@ -377,7 +376,7 @@ def test_slow_spawn(app, io_loop): @gen.coroutine def wait_stop(): while app_user.stop_pending: - yield gen.Task(io_loop.add_timeout, dt) + yield gen.sleep(0.1) r = api_request(app, 'users', name, 'server', method='delete') r.raise_for_status() @@ -410,11 +409,10 @@ def test_never_spawn(app, io_loop): assert app_user.spawner is not None assert app_user.spawn_pending - dt = timedelta(seconds=0.1) @gen.coroutine def wait_pending(): while app_user.spawn_pending: - yield gen.Task(io_loop.add_timeout, dt) + yield gen.sleep(0.1) io_loop.run_sync(wait_pending) assert not app_user.spawn_pending diff --git a/jupyterhub/utils.py b/jupyterhub/utils.py index 8688f538..e9f8223d 100644 --- a/jupyterhub/utils.py +++ b/jupyterhub/utils.py @@ -41,7 +41,7 @@ def wait_for_server(ip, port, timeout=10): app_log.error("Unexpected error waiting for %s:%i %s", ip, port, e ) - yield gen.Task(loop.add_timeout, loop.time() + 0.1) + yield gen.sleep(0.1) else: return raise TimeoutError("Server at {ip}:{port} didn't respond in {timeout} seconds".format( @@ -67,14 +67,14 @@ def wait_for_http_server(url, timeout=10): # we expect 599 for no connection, # but 502 or other proxy error is conceivable app_log.warn("Server at %s responded with error: %s", url, e.code) - yield gen.Task(loop.add_timeout, loop.time() + 0.25) + yield gen.sleep(0.1) else: app_log.debug("Server at %s responded with %s", url, e.code) return except (OSError, socket.error) as e: if e.errno not in {errno.ECONNABORTED, errno.ECONNREFUSED, errno.ECONNRESET}: app_log.warn("Failed to connect to %s (%s)", url, e) - yield gen.Task(loop.add_timeout, loop.time() + 0.25) + yield gen.sleep(0.1) else: return diff --git a/requirements.txt b/requirements.txt index ca60a120..9946e3d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ traitlets>=4 -tornado>=4 +tornado>=4.1 jinja2 pamela sqlalchemy