Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d5bd036

Browse files
asvetlovmiss-islington
authored andcommitted
bpo-34849: Don't log wating for selector.select in asyncio loop iteration (GH-9641)
The waiting is pretty normal for any asyncio program, logging its time just adds a noise to logs without any useful information provided. https://bugs.python.org/issue34849
1 parent df81015 commit d5bd036

3 files changed

Lines changed: 4 additions & 47 deletions

File tree

Lib/asyncio/base_events.py

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1719,28 +1719,7 @@ def _run_once(self):
17191719
when = self._scheduled[0]._when
17201720
timeout = min(max(0, when - self.time()), MAXIMUM_SELECT_TIMEOUT)
17211721

1722-
if self._debug and timeout != 0:
1723-
t0 = self.time()
1724-
event_list = self._selector.select(timeout)
1725-
dt = self.time() - t0
1726-
if dt >= 1.0:
1727-
level = logging.INFO
1728-
else:
1729-
level = logging.DEBUG
1730-
nevent = len(event_list)
1731-
if timeout is None:
1732-
logger.log(level, 'poll took %.3f ms: %s events',
1733-
dt * 1e3, nevent)
1734-
elif nevent:
1735-
logger.log(level,
1736-
'poll %.3f ms took %.3f ms: %s events',
1737-
timeout * 1e3, dt * 1e3, nevent)
1738-
elif dt >= 1.0:
1739-
logger.log(level,
1740-
'poll %.3f ms took %.3f ms: timeout',
1741-
timeout * 1e3, dt * 1e3)
1742-
else:
1743-
event_list = self._selector.select(timeout)
1722+
event_list = self._selector.select(timeout)
17441723
self._process_events(event_list)
17451724

17461725
# Handle 'later' callbacks that are ready.

Lib/test/test_asyncio/test_base_events.py

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -371,31 +371,6 @@ def test_set_debug(self):
371371
self.loop.set_debug(False)
372372
self.assertFalse(self.loop.get_debug())
373373

374-
@mock.patch('asyncio.base_events.logger')
375-
def test__run_once_logging(self, m_logger):
376-
def slow_select(timeout):
377-
# Sleep a bit longer than a second to avoid timer resolution
378-
# issues.
379-
time.sleep(1.1)
380-
return []
381-
382-
# logging needs debug flag
383-
self.loop.set_debug(True)
384-
385-
# Log to INFO level if timeout > 1.0 sec.
386-
self.loop._selector.select = slow_select
387-
self.loop._process_events = mock.Mock()
388-
self.loop._run_once()
389-
self.assertEqual(logging.INFO, m_logger.log.call_args[0][0])
390-
391-
def fast_select(timeout):
392-
time.sleep(0.001)
393-
return []
394-
395-
self.loop._selector.select = fast_select
396-
self.loop._run_once()
397-
self.assertEqual(logging.DEBUG, m_logger.log.call_args[0][0])
398-
399374
def test__run_once_schedule_handle(self):
400375
handle = None
401376
processed = False
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Don't log wating for ``selector.select`` in asyncio loop iteration. The
2+
waiting is pretty normal for any asyncio program, logging its time just adds
3+
a noise to logs without any useful information provided.

0 commit comments

Comments
 (0)