mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-19 16:03:00 +00:00
Replace gen.sleep with asyncio.sleep
This commit is contained in:
@@ -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)
|
||||||
|
@@ -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:
|
||||||
|
@@ -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()
|
||||||
|
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user