ClericPy / ichrome

Chrome controller for Humans, based on Chrome Devtools Protocol(CDP) and python3.7+.
https://pypi.org/project/ichrome/
MIT License
235 stars 29 forks source link

Exceptions while running example code #55

Closed oosugi84 closed 3 years ago

oosugi84 commented 3 years ago
INFO  2021-08-09 20:25:52 [ichrome] pool.py(463): [enqueue](0) ChromeTask(<9234>, PENDING, id=1, tab=None), timeout=None, data=<ichrome.pool._TabWorker object at 0x7fb32a38a820>
INFO  2021-08-09 20:25:53 [ichrome] pool.py(171): [online] ChromeWorker(<9234>, 0/5, 0 todos) is online.
INFO  2021-08-09 20:25:53 [ichrome] pool.py(199): ChromeWorker(<9234>, 0/5, 0 todos) get a new task ChromeTask(<9234>, PENDING, id=1, tab=None).
PyPI · The Python Package Index
INFO  2021-08-09 20:25:58 [ichrome] pool.py(181): [offline] ChromeWorker(<9234>, 0/5, 0 todos) is offline.
INFO  2021-08-09 20:25:58 [ichrome] pool.py(240): [finished](0) ChromeTask(<9234>, PENDING, id=1, tab=None)
Traceback (most recent call last):
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/Users/zphz/.vscode/extensions/ms-python.python-2021.8.1105858891/pythonFiles/lib/python/debugpy/__main__.py", line 45, in <module>
    cli.main()
  File "/Users/zphz/.vscode/extensions/ms-python.python-2021.8.1105858891/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 444, in main
    run()
  File "/Users/zphz/.vscode/extensions/ms-python.python-2021.8.1105858891/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 285, in run_file
    runpy.run_path(target_as_str, run_name=compat.force_str("__main__"))
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/runpy.py", line 265, in run_path
    return _run_module_code(code, init_globals, run_name,
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/runpy.py", line 97, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/Users/zphz/workspace/expert-monitor/pipeline/batch.py", line 21, in <module>
    test_chrome_engine_connect_tab()
  File "/Users/zphz/workspace/expert-monitor/pipeline/batch.py", line 16, in test_chrome_engine_connect_tab
    asyncio.get_event_loop().run_until_complete(
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/Users/zphz/workspace/expert-monitor/pipeline/batch.py", line 14, in _test_chrome_engine_connect_tab
    print(await tab.title)
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/pool.py", line 382, in __aexit__
    return await self.shutdown()
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/pool.py", line 375, in shutdown
    await worker.shutdown()
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/pool.py", line 273, in shutdown
    await self.daemon_task
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/pool.py", line 181, in _start_chrome_daemon
    logger.info(f'[offline] {self} is offline.')
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/daemon.py", line 827, in __aexit__
    await self.shutdown('__aexit__')
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/daemon.py", line 848, in shutdown
    await async_run(self.kill, True)
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/base.py", line 347, in function
    return func(*args, **kwargs)
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/daemon.py", line 563, in kill
    self.clear_chrome_process(self.port, max_deaths=max_deaths)
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/daemon.py", line 605, in clear_chrome_process
    return clear_chrome_process(port=port,
  File "/Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/base.py", line 124, in clear_chrome_process
    for proc in procs:
TypeError: 'NoneType' object is not iterable
Task was destroyed but it is pending!
task: <Task pending name='Task-7' coro=<ChromeWorker.future_consumer() running at /Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/pool.py:198> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7fb32a3c9ca0>()]>>
Task was destroyed but it is pending!
task: <Task pending name='Task-6' coro=<ChromeWorker.future_consumer() running at /Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/pool.py:198> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7fb32a3c9c70>()]>>
Task was destroyed but it is pending!
task: <Task pending name='Task-5' coro=<ChromeWorker.future_consumer() running at /Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/pool.py:198> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7fb32a3c9c40>()]>>
Task was destroyed but it is pending!
task: <Task pending name='Task-4' coro=<ChromeWorker.future_consumer() running at /Users/zphz/opt/anaconda3/envs/pachytest-scraper/lib/python3.8/site-packages/ichrome/pool.py:198> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7fb32a415d00>()]>>

Btw I'm using the following code to get results, am I doing right?

import asyncio

from ichrome.pool import ChromeEngine

def test_chrome_engine_connect_tab():

    async def _test_chrome_engine_connect_tab():

        async with ChromeEngine(port=9234, headless=True,
                                disable_image=True) as ce:
            async with ce.connect_tab(port=9234) as tab:
                await tab.goto('http://pypi.org')
                title = await tab.title
                return title

    loop = asyncio.get_event_loop()
    get_future = asyncio.ensure_future(_test_chrome_engine_connect_tab())
    loop.run_until_complete(get_future)
    return get_future.result()

if __name__ == "__main__":
    title = test_chrome_engine_connect_tab()
    print(title)
ClericPy commented 3 years ago
INFO  2021-08-09 20:37:54 [ichrome] pool.py(463): [enqueue](0) ChromeTask(<9234>, PENDING, id=1, tab=None), timeout=None, data=<ichrome.pool._TabWorker object at 0x000001E8D2C2A160>
INFO  2021-08-09 20:37:57 [ichrome] pool.py(171): [online] ChromeWorker(<9234>, 0/5, 0 todos) is online.
INFO  2021-08-09 20:37:57 [ichrome] pool.py(199): ChromeWorker(<9234>, 0/5, 0 todos) get a new task ChromeTask(<9234>, PENDING, id=1, tab=None).
INFO  2021-08-09 20:38:02 [ichrome] pool.py(181): [offline] ChromeWorker(<9234>, 0/5, 0 todos) is offline.
INFO  2021-08-09 20:38:02 [ichrome] pool.py(240): [finished](0) ChromeTask(<9234>, PENDING, id=1, tab=None)
PyPI · The Python Package Index

I didn't reproduce that error. It seems that procs is None and not iterable, so I will fix this bug later, thanks for your attention

ClericPy commented 3 years ago

pip install -U ichrome