Skip to content

Commit 8bfc06b

Browse files
committed
asyncio: sync with Tulip
* Tulip issue #182: Improve logs of BaseEventLoop._run_once() - Don't log non-blocking poll - Only log polling with a timeout if it gets events or if it timed out after more than 1 second. * Fix some pyflakes warnings: remove unused imports
1 parent 533d9ed commit 8bfc06b

File tree

6 files changed

+20
-16
lines changed

6 files changed

+20
-16
lines changed

Lib/asyncio/base_events.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -882,19 +882,26 @@ def _run_once(self):
882882
when = self._scheduled[0]._when
883883
timeout = max(0, when - self.time())
884884

885-
if self._debug:
885+
if self._debug and timeout != 0:
886886
t0 = self.time()
887887
event_list = self._selector.select(timeout)
888888
dt = self.time() - t0
889-
if dt >= 1:
889+
if dt >= 1.0:
890890
level = logging.INFO
891891
else:
892892
level = logging.DEBUG
893-
if timeout is not None:
894-
logger.log(level, 'poll %.3f took %.3f seconds',
895-
timeout, dt)
896-
else:
897-
logger.log(level, 'poll took %.3f seconds', dt)
893+
nevent = len(event_list)
894+
if timeout is None:
895+
logger.log(level, 'poll took %.3f ms: %s events',
896+
dt * 1e3, nevent)
897+
elif nevent:
898+
logger.log(level,
899+
'poll %.3f ms took %.3f ms: %s events',
900+
timeout * 1e3, dt * 1e3, nevent)
901+
elif dt >= 1.0:
902+
logger.log(level,
903+
'poll %.3f ms took %.3f ms: timeout',
904+
timeout * 1e3, dt * 1e3)
898905
else:
899906
event_list = self._selector.select(timeout)
900907
self._process_events(event_list)

Lib/asyncio/streams.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
from . import events
1515
from . import futures
1616
from . import protocols
17-
from . import tasks
1817
from .coroutines import coroutine
1918

2019

Lib/asyncio/tasks.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
from . import events
1919
from . import futures
2020
from .coroutines import coroutine
21-
from .log import logger
2221

2322
_PY34 = (sys.version_info >= (3, 4))
2423

Lib/test/test_asyncio/test_base_events.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
import asyncio
1414
from asyncio import base_events
15-
from asyncio import events
1615
from asyncio import constants
1716
from asyncio import test_utils
1817

@@ -26,6 +25,7 @@ class BaseEventLoopTests(test_utils.TestCase):
2625
def setUp(self):
2726
self.loop = base_events.BaseEventLoop()
2827
self.loop._selector = mock.Mock()
28+
self.loop._selector.select.return_value = ()
2929
self.set_event_loop(self.loop)
3030

3131
def test_not_implemented(self):

Lib/test/test_asyncio/test_events.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ def test_create_unix_server_path_socket_error(self):
715715
with self.assertRaisesRegex(ValueError,
716716
'path and sock can not be specified '
717717
'at the same time'):
718-
server = self.loop.run_until_complete(f)
718+
self.loop.run_until_complete(f)
719719

720720
def _create_ssl_context(self, certfile, keyfile=None):
721721
sslcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23)

Lib/test/test_asyncio/test_tasks.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"""Tests for tasks.py."""
22

3-
import os.path
43
import re
54
import sys
65
import types
@@ -1640,9 +1639,9 @@ def coro_noop():
16401639
asyncio.coroutines._DEBUG = debug
16411640

16421641
tb_filename = __file__
1643-
tb_lineno = sys._getframe().f_lineno + 1
1644-
coro = coro_noop()
1645-
coro = None
1642+
tb_lineno = sys._getframe().f_lineno + 2
1643+
# create a coroutine object but don't use it
1644+
coro_noop()
16461645
support.gc_collect()
16471646

16481647
self.assertTrue(m_log.error.called)
@@ -1652,7 +1651,7 @@ def coro_noop():
16521651
r'Coroutine object created at \(most recent call last\):\n'
16531652
r'.*\n'
16541653
r' File "%s", line %s, in test_coroutine_never_yielded\n'
1655-
r' coro = coro_noop\(\)$'
1654+
r' coro_noop\(\)$'
16561655
% (re.escape(coro_noop.__qualname__),
16571656
re.escape(func_filename), func_lineno,
16581657
re.escape(tb_filename), tb_lineno))

0 commit comments

Comments
 (0)