- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在这段代码中遇到了一个小问题:
try:
return await asyncio.wait_for(tcp_command(cmd), timeout=timeout)
except (OSError, asyncio.TimeoutError) as err:
print(f"Network problem: {err}")
当超时发生时,它只打印“网络问题:”。它是由附加到引发的 asyncio.TimeoutError 的空值引起的:
# inside wait_for():
raise futures.TimeoutError()
单独处理 TimeoutError
很容易,但我发现原来的构造非常惯用,现在一个核心库打破了它。有充分的理由吗?我的假设 - 打印异常应该让我们知道哪里出了问题 - 正确吗?
最佳答案
Is there a good reason for it?
是的,您希望从 TimeoutError
中得到什么样的消息? “发生超时”?异常本身是不言自明的,不需要这样的冗余。
Is my assumption - that printing an exception should give us a clue what went wrong - correct?
是也不是。线索?是的。完整信息?否。异常消息不是强制性的。异常的类型也是一个重要的信息。在许多情况下,甚至超过消息本身。
所以首先:使用 print
从一开始就是错误的。 Python 具有非常丰富的日志记录支持。例如 logger.exception(str(exc))
解决了您的问题,因为除了消息之外,它还记录了整个回溯。至少在默认情况下,它是可以自定义的。
但是如果你仍然想使用 print
然后考虑记录整个回溯:
import traceback
# traceback.print_exc()
print(traceback.format_exc())
如果整个回溯太大,那么您总是可以简单地打印异常的类名:
# print(f'[{type(exc).__name__}] {exc}')
print(f'[{type(exc)}] {exc}')
或按异常(exception)情况定制:
try:
return await asyncio.wait_for(tcp_command(cmd), timeout=timeout)
except OSError as err:
print(f"Network problem: {err}")
except asyncio.TimeoutError:
print('Timeout occured')
关于python - 为什么 asyncio 在没有任何消息的情况下引发 TimeoutError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52257101/
我想从 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
我是一名优秀的程序员,十分优秀!