Replace gen.sleep with asyncio.sleep

This commit is contained in:
Erik Sundell
2020-11-05 03:31:01 +01:00
parent e1166ec834
commit 4a17441e5a
7 changed files with 23 additions and 27 deletions

View File

@@ -1538,7 +1538,7 @@ class UserUrlHandler(BaseHandler):
if redirects: if redirects:
self.log.warning("Redirect loop detected on %s", self.request.uri) self.log.warning("Redirect loop detected on %s", self.request.uri)
# add capped exponential backoff where cap is 10s # add capped exponential backoff where cap is 10s
await gen.sleep(min(1 * (2 ** redirects), 10)) await asyncio.sleep(min(1 * (2 ** redirects), 10))
# rewrite target url with new `redirects` query value # rewrite target url with new `redirects` query value
url_parts = urlparse(target) url_parts = urlparse(target)
query_parts = parse_qs(url_parts.query) query_parts = parse_qs(url_parts.query)

View File

@@ -20,7 +20,6 @@ from urllib.parse import urlparse
from jinja2 import ChoiceLoader from jinja2 import ChoiceLoader
from jinja2 import FunctionLoader from jinja2 import FunctionLoader
from tornado import gen
from tornado import ioloop from tornado import ioloop
from tornado.httpclient import AsyncHTTPClient from tornado.httpclient import AsyncHTTPClient
from tornado.httpclient import HTTPRequest from tornado.httpclient import HTTPRequest
@@ -434,7 +433,7 @@ class SingleUserNotebookAppMixin(Configurable):
i, i,
RETRIES, RETRIES,
) )
await gen.sleep(min(2 ** i, 16)) await asyncio.sleep(min(2 ** i, 16))
else: else:
break break
else: else:

View File

@@ -36,7 +36,6 @@ from unittest import mock
from urllib.parse import urlparse from urllib.parse import urlparse
from pamela import PAMError from pamela import PAMError
from tornado import gen
from tornado.ioloop import IOLoop from tornado.ioloop import IOLoop
from traitlets import Bool from traitlets import Bool
from traitlets import default from traitlets import default
@@ -114,11 +113,11 @@ class SlowSpawner(MockSpawner):
if self._start_future is not None: if self._start_future is not None:
await self._start_future await self._start_future
else: else:
await gen.sleep(self.delay) await asyncio.sleep(self.delay)
return ip, port return ip, port
async def stop(self): async def stop(self):
await gen.sleep(self.delay) await asyncio.sleep(self.delay)
await super().stop() await super().stop()

View File

@@ -613,7 +613,7 @@ async def test_slow_spawn(app, no_patience, slow_spawn):
async def wait_spawn(): async def wait_spawn():
while not app_user.running: while not app_user.running:
await gen.sleep(0.1) await asyncio.sleep(0.1)
await wait_spawn() await wait_spawn()
assert not app_user.spawner._spawn_pending assert not app_user.spawner._spawn_pending
@@ -622,7 +622,7 @@ async def test_slow_spawn(app, no_patience, slow_spawn):
async def wait_stop(): async def wait_stop():
while app_user.spawner._stop_pending: while app_user.spawner._stop_pending:
await gen.sleep(0.1) await asyncio.sleep(0.1)
r = await api_request(app, 'users', name, 'server', method='delete') r = await api_request(app, 'users', name, 'server', method='delete')
r.raise_for_status() r.raise_for_status()
@@ -656,7 +656,7 @@ async def test_never_spawn(app, no_patience, never_spawn):
assert app.users.count_active_users()['pending'] == 1 assert app.users.count_active_users()['pending'] == 1
while app_user.spawner.pending: while app_user.spawner.pending:
await gen.sleep(0.1) await asyncio.sleep(0.1)
print(app_user.spawner.pending) print(app_user.spawner.pending)
assert not app_user.spawner._spawn_pending assert not app_user.spawner._spawn_pending
@@ -682,7 +682,7 @@ async def test_slow_bad_spawn(app, no_patience, slow_bad_spawn):
r = await api_request(app, 'users', name, 'server', method='post') r = await api_request(app, 'users', name, 'server', method='post')
r.raise_for_status() r.raise_for_status()
while user.spawner.pending: while user.spawner.pending:
await gen.sleep(0.1) await asyncio.sleep(0.1)
# spawn failed # spawn failed
assert not user.running assert not user.running
assert app.users.count_active_users()['pending'] == 0 assert app.users.count_active_users()['pending'] == 0
@@ -824,7 +824,7 @@ async def progress_forever():
for i in range(1, 10): for i in range(1, 10):
await yield_({'progress': i, 'message': 'Stage %s' % i}) await yield_({'progress': i, 'message': 'Stage %s' % i})
# wait a long time before the next event # wait a long time before the next event
await gen.sleep(10) await asyncio.sleep(10)
if sys.version_info >= (3, 6): if sys.version_info >= (3, 6):
@@ -840,7 +840,7 @@ async def progress_forever_native():
'message': 'Stage %s' % i, 'message': 'Stage %s' % i,
} }
# wait a long time before the next event # wait a long time before the next event
await gen.sleep(10) await asyncio.sleep(10)
""", """,
globals(), globals(),
) )
@@ -902,7 +902,7 @@ async def test_spawn_limit(app, no_patience, slow_spawn, request):
users[0].spawner._start_future.set_result(None) users[0].spawner._start_future.set_result(None)
# wait for ykka to finish # wait for ykka to finish
while not users[0].running: while not users[0].running:
await gen.sleep(0.1) await asyncio.sleep(0.1)
assert app.users.count_active_users()['pending'] == 1 assert app.users.count_active_users()['pending'] == 1
r = await api_request(app, 'users', name, 'server', method='post') r = await api_request(app, 'users', name, 'server', method='post')
@@ -913,7 +913,7 @@ async def test_spawn_limit(app, no_patience, slow_spawn, request):
for user in users[1:]: for user in users[1:]:
user.spawner._start_future.set_result(None) user.spawner._start_future.set_result(None)
while not all(u.running for u in users): while not all(u.running for u in users):
await gen.sleep(0.1) await asyncio.sleep(0.1)
# everybody's running, pending count should be back to 0 # everybody's running, pending count should be back to 0
assert app.users.count_active_users()['pending'] == 0 assert app.users.count_active_users()['pending'] == 0
@@ -922,7 +922,7 @@ async def test_spawn_limit(app, no_patience, slow_spawn, request):
r = await api_request(app, 'users', u.name, 'server', method='delete') r = await api_request(app, 'users', u.name, 'server', method='delete')
r.raise_for_status() r.raise_for_status()
while any(u.spawner.active for u in users): while any(u.spawner.active for u in users):
await gen.sleep(0.1) await asyncio.sleep(0.1)
@mark.slow @mark.slow
@@ -1000,7 +1000,7 @@ async def test_start_stop_race(app, no_patience, slow_spawn):
r = await api_request(app, 'users', user.name, 'server', method='delete') r = await api_request(app, 'users', user.name, 'server', method='delete')
assert r.status_code == 400 assert r.status_code == 400
while not spawner.ready: while not spawner.ready:
await gen.sleep(0.1) await asyncio.sleep(0.1)
spawner.delay = 3 spawner.delay = 3
# stop the spawner # stop the spawner
@@ -1008,7 +1008,7 @@ async def test_start_stop_race(app, no_patience, slow_spawn):
assert r.status_code == 202 assert r.status_code == 202
assert spawner.pending == 'stop' assert spawner.pending == 'stop'
# make sure we get past deleting from the proxy # make sure we get past deleting from the proxy
await gen.sleep(1) await asyncio.sleep(1)
# additional stops while stopping shouldn't trigger a new stop # additional stops while stopping shouldn't trigger a new stop
with mock.patch.object(spawner, 'stop') as m: with mock.patch.object(spawner, 'stop') as m:
r = await api_request(app, 'users', user.name, 'server', method='delete') r = await api_request(app, 'users', user.name, 'server', method='delete')
@@ -1020,7 +1020,7 @@ async def test_start_stop_race(app, no_patience, slow_spawn):
assert r.status_code == 400 assert r.status_code == 400
while spawner.active: while spawner.active:
await gen.sleep(0.1) await asyncio.sleep(0.1)
# start after stop is okay # start after stop is okay
r = await api_request(app, 'users', user.name, 'server', method='post') r = await api_request(app, 'users', user.name, 'server', method='post')
assert r.status_code == 202 assert r.status_code == 202

View File

@@ -8,7 +8,6 @@ from urllib.parse import urlparse
import pytest import pytest
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from tornado import gen
from tornado.escape import url_escape from tornado.escape import url_escape
from tornado.httputil import url_concat from tornado.httputil import url_concat

View File

@@ -1,6 +1,7 @@
"""Tests for process spawning""" """Tests for process spawning"""
# Copyright (c) Jupyter Development Team. # Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License. # Distributed under the terms of the Modified BSD License.
import asyncio
import logging import logging
import os import os
import signal import signal
@@ -12,7 +13,6 @@ from unittest import mock
from urllib.parse import urlparse from urllib.parse import urlparse
import pytest import pytest
from tornado import gen
from .. import orm from .. import orm
from .. import spawner as spawnermod from .. import spawner as spawnermod
@@ -123,7 +123,7 @@ async def test_stop_spawner_sigint_fails(db):
await spawner.start() await spawner.start()
# wait for the process to get to the while True: loop # wait for the process to get to the while True: loop
await gen.sleep(1) await asyncio.sleep(1)
status = await spawner.poll() status = await spawner.poll()
assert status is None assert status is None
@@ -138,7 +138,7 @@ async def test_stop_spawner_stop_now(db):
await spawner.start() await spawner.start()
# wait for the process to get to the while True: loop # wait for the process to get to the while True: loop
await gen.sleep(1) await asyncio.sleep(1)
status = await spawner.poll() status = await spawner.poll()
assert status is None assert status is None
@@ -165,7 +165,7 @@ async def test_spawner_poll(db):
spawner.start_polling() spawner.start_polling()
# wait for the process to get to the while True: loop # wait for the process to get to the while True: loop
await gen.sleep(1) await asyncio.sleep(1)
status = await spawner.poll() status = await spawner.poll()
assert status is None assert status is None
@@ -173,12 +173,12 @@ async def test_spawner_poll(db):
proc.terminate() proc.terminate()
for i in range(10): for i in range(10):
if proc.poll() is None: if proc.poll() is None:
await gen.sleep(1) await asyncio.sleep(1)
else: else:
break break
assert proc.poll() is not None assert proc.poll() is not None
await gen.sleep(2) await asyncio.sleep(2)
status = await spawner.poll() status = await spawner.poll()
assert status is not None assert status is not None

View File

@@ -24,7 +24,6 @@ from async_generator import aclosing
from async_generator import async_generator from async_generator import async_generator
from async_generator import asynccontextmanager from async_generator import asynccontextmanager
from async_generator import yield_ from async_generator import yield_
from tornado import gen
from tornado import ioloop from tornado import ioloop
from tornado import web from tornado import web
from tornado.httpclient import AsyncHTTPClient from tornado.httpclient import AsyncHTTPClient
@@ -175,7 +174,7 @@ async def exponential_backoff(
dt = min(max_wait, remaining, random.uniform(0, start_wait * scale)) dt = min(max_wait, remaining, random.uniform(0, start_wait * scale))
if dt < max_wait: if dt < max_wait:
scale *= scale_factor scale *= scale_factor
await gen.sleep(dt) await asyncio.sleep(dt)
raise TimeoutError(fail_message) raise TimeoutError(fail_message)