nest_asyncio.apply() cause pyppeteer hangs and cpu 100%
QGB opened this issue · 2 comments
QGB commented
import nest_asyncio;nest_asyncio.apply() # add this line, program hangs
import pyppeteer,asyncio
w8="ws://127.0.0.1:9222/devtools/browser/9a23f54e-8338-4166-9f3c-bbc6629c17a4"
loop=asyncio.get_event_loop()
connection =pyppeteer.connection.Connection(w8,loop,0)
async def af():
r=await connection.send('Target.getBrowserContexts')
print(r)
return
loop.run_until_complete(af())
when I press ctrl+c, traceback is
>>python C:/test/atest.py
Traceback (most recent call last):
File "C:/test/atest.py", line 34, in <module>
loop.run_until_complete(af())
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 89, in run_until_complete
self._run_once()
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 123, in _run_once
handle._run()
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 190, in run
ctx.run(self._callback, *self._args)
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 148, in step
step_orig(task, exc)
File "C:\QGB\Anaconda3\lib\asyncio\tasks.py", line 249, in __step
result = coro.send(None)
File "C:\QGB\Anaconda3\lib\site-packages\pyppeteer\connection.py", line 70, in _async_send
while not self._connected:
KeyboardInterrupt
2020-11-29:10:51:53,257 ERROR [base_events.py:1604] Task exception was never retrieved
QGB commented
>python C:/test/atest.py
Traceback (most recent call last):
File "C:/test/atest.py", line 34, in <module>
loop.run_until_complete(af())
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 89, in run_until_complete
self._run_once()
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 123, in _run_once
handle._run()
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 190, in run
ctx.run(self._callback, *self._args)
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 148, in step
step_orig(task, exc)
File "C:\QGB\Anaconda3\lib\asyncio\tasks.py", line 249, in __step
result = coro.send(None)
File "C:\QGB\Anaconda3\lib\site-packages\pyppeteer\connection.py", line 71, in _async_send
await asyncio.sleep(self._delay)
File "C:\QGB\Anaconda3\lib\asyncio\tasks.py", line 585, in sleep
await __sleep0()
File "C:\QGB\Anaconda3\lib\asyncio\tasks.py", line 579, in __sleep0
yield
KeyboardInterrupt
2020-11-29:11:16:53,569 ERROR [base_events.py:1604] Task exception was never retrieved
future: <Task finished coro=<Connection._async_send() done, defined at C:\QGB\Anaconda3\lib\site-packages\pyppeteer\connection.py:69> exception=KeyboardInterrupt()>
Traceback (most recent call last):
File "C:/test/atest.py", line 34, in <module>
loop.run_until_complete(af())
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 89, in run_until_complete
self._run_once()
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 123, in _run_once
handle._run()
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 190, in run
ctx.run(self._callback, *self._args)
File "C:\QGB\Anaconda3\lib\site-packages\nest_asyncio.py", line 148, in step
step_orig(task, exc)
File "C:\QGB\Anaconda3\lib\asyncio\tasks.py", line 249, in __step
result = coro.send(None)
File "C:\QGB\Anaconda3\lib\site-packages\pyppeteer\connection.py", line 71, in _async_send
await asyncio.sleep(self._delay)
File "C:\QGB\Anaconda3\lib\asyncio\tasks.py", line 585, in sleep
await __sleep0()
File "C:\QGB\Anaconda3\lib\asyncio\tasks.py", line 579, in __sleep0
yield
KeyboardInterrupt
erdewit commented
This doesn't seem to be related to nest_asyncio at all, without it still hangs with 100% CPU.
Btw, the 100% CPU is caused by pyppeteer using a sleep of zero inside a loop. It's better to use a small non-zero sleep (like asyncio.sleep(0.001)
).