- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 try catch run_until_complete
内抛出的异常,但无论我尝试什么,我似乎都无法正确捕获它们。
这是我的最新尝试(注意,我使用的是 Pypputeer,它是 Python 中 Puppeteer 的一个分支,它使用 asyncio):
import asyncio
from pyppeteer.launcher import launch
async def test(instance):
page = await instance.newPage()
await page.goto('http://www.google.com', {'waitUntil': 'load', 'timeout': 1})
await page.pdf({'path': 'example.pdf'})
async def test2():
instance = launch(headless=True)
try:
task = asyncio.ensure_future(test(instance))
print(task)
await task
except:
print("Caught!")
instance.close()
def __main__():
try:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(test2())
except:
print("ERROR")
return 'ok'
我在这段代码中遇到的问题有两个:
asyncio.get_event_loop
,则会收到以下错误:There is no current event loop in thread 'Thread-1'.2. If I change the timeout to a decent value, I get the following error (at
loop.run_until_complete(test2())
):RuntimeError: This event loop is already running3. If I set the timeout to 1 (to force the error), I get the exception indicated below, shown in the console, and the text "ERROR" is shown. (but not caught).
这是堆栈跟踪:
Exception in callback NavigatorWatcher.waitForNavigation.<locals>.watchdog_cb(<Task finishe...> result=None>) at /home/user/www/project/api/env/lib/python3.6/site-packages/pyppeteer/navigator_watcher.py:49
handle: <Handle NavigatorWatcher.waitForNavigation.<locals>.watchdog_cb(<Task finishe...> result=None>) at /home/user/www/project/api/env/lib/python3.6/site-packages/pyppeteer/navigator_watcher.py:49>
Traceback (most recent call last):
File "/usr/lib64/python3.6/asyncio/events.py", line 145, in _run
self._callback(*self._args)
File "/home/user/www/project/api/env/lib/python3.6/site-packages/pyppeteer/navigator_watcher.py", line 52, in watchdog_cb
self._timeout)
File "/home/user/www/project/api/env/lib/python3.6/site-packages/pyppeteer/navigator_watcher.py", line 40, in _raise_error
raise error
concurrent.futures._base.TimeoutError: Navigation Timeout Exceeded: 1 ms exceeded
那么,TLDR,如何捕获 asyncio 的 run_until_complete
调用中抛出的异常?
最佳答案
您无法捕获此错误,因为它不会在事件循环完成工作之前发生在某个地方:
loop.run_until_complete(test2())
print('TEST !!!') # You will see this line, because there was no exception before
但是如果你查看整个回溯,你会看到:
Error in atexit._run_exitfuncs:
这意味着使用atexit注册的Pypputeer函数之一内部发生了异常。处理程序。您应该在那里搜索如何捕获异常,但我不确定是否可能。
<小时/>If an exception is raised during execution of the exit handlers, a traceback is printed (unless SystemExit is raised) and the exception information is saved. After all exit handlers have had a chance to run the last exception to be raised is re-raised.
不相关,但是never do这样的事情。
except:
关于python - 如何捕获并发.futures._base.TimeoutError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49014284/
我想从 URL 中获取一些数据,但服务器速度很慢...所以每当我使用 volley 获取数据时,我都会得到 TimeOurError,无论如何我可以处理多长时间 volley 应该尝试获取数据,因为服
我想测试 asyncio 如何处理阻塞进程。 我的代码一定有问题,因为 asyncio.TimeoutError 从未引发: import asyncio, random, time q = asyn
我有一个 asyncio.Task 需要在一段时间后取消。在取消之前,任务需要做一些清理。根据文档,我应该只能调用 task.cancel 或 asyncio.wait_for(coroutine,
我不明白为什么有时我无法在我的 flash_serial_buffer 方法中捕捉到 TimeOutError。 当运行我的程序时,我有时会收到一个未被捕获的 TimeOutError,我不明白为什么
我正在执行 aiohttp.ClientSession 实例的 request(),有时会引发 asyncio.TimeoutError。我认为在这种情况下必须引发 aiohttp.ServerTim
我似乎无法捕捉到这个 TimeoutError 异常。在此找到的其他主题建议对 Python 3 使用“except TimeoutError”,但它仍然会引发错误。错误日志如下。 我也尝试过导入 r
我正在 try catch run_until_complete 内抛出的异常,但无论我尝试什么,我似乎都无法正确捕获它们。 这是我的最新尝试(注意,我使用的是 Pypputeer,它是 Python
我有一个可以取消的 Bluebird promise 。当取消时,我必须做一些工作来巧妙地中止正在运行的任务。可以通过两种方式取消任务:通过 promise.cancel() 或 promise.ti
我使用aiohttp和limited_as_completed方法来加速抓取(大约1亿个静态网站页面)。但是,代码会在几分钟后停止,并返回 TimeoutError。我尝试了几种方法,但仍然无法阻止引
更新:刚刚发现 echo_pool=True 只显示主要事件,而是使用 echo_pool="debug"。 我必须明确关闭引擎连接,否则在使用 nosetest 和 sqlalchemy 时会出现
我在这段代码中遇到了一个小问题: try: return await asyncio.wait_for(tcp_command(cmd), timeout=timeout) except (O
我使用 asyncio 来获取 url,有时会超时,尽我所能,我无法使用以下代码捕获 asyncio.TimeoutError! async def fetch(url, session):
我的应用程序中不断出现 Redis::Timeout 错误(在 UI 和后台作业中)。我正在为 Redis 使用 AWS ElastiCache 服务。 这就是我创建 Redis 连接的方式。在我的
在 Node 6.11 上使用 Sequelize 4.5.0 运行的我的 Express 应用程序有时会抛出 TimeoutError: ResourceRequest timed out,在不应该
我们使用带有 Python3.5 的 aiohttp 将数据发布到 Elasticsearch 中。帖子行如下: response = await self._http_session.request
我正在使用 nodeJs Express 框架。 我将 mysql 数据库与 sequelizejs 库一起使用,并使用查询来检索数据。 当我为将近 50,00,000 条记录触发选择查询时,出现超时
我在安装模块时遇到了这个问题 matplotlib并写了这段代码: import matplotlib.pyplot as plt 然后这里是错误: "matplotlib.cbook.Timeout
我想使用 TimeoutError 和 tqdm 进度条执行多重处理。 我已经成功地分别尝试了它们。我该如何结合逻辑? 目标: 进度条应随着每次 imap_unordered 调用而更新 每个进程
我最近在 Heroku 上使用我的应用时遇到了这个错误。并发现了这一点: My::Application.config.session_store :redis_session_store, {
我曾两次尝试在 CentOS7 VM 上安装 RubyMine。由于 Redis::TimeoutError,它们现在都失败了。 我在尝试启动 Rails 服务器时收到此错误。在我通过“service
我是一名优秀的程序员,十分优秀!