【问题标题】:What does an "Executing <Handle <TaskWakeupMethWrapper..." warning in python asyncio meanpython asyncio中的“执行<Handle <TaskWakeupMethWrapper ...”警告是什么意思
【发布时间】:2018-05-08 15:39:47
【问题描述】:

在设置 asyncio 未来的结果时正在打印以下消息。

Executing <Handle <TaskWakeupMethWrapper object at 0x7fc3435141f8>(<Future finis...ection.py:260>) created at /media/stuff/stuff/projects/dare/dcds/dcds/common/connection.py:221> took 1.723 seconds

我什至不知道从哪里开始寻找原因。但是如果我关闭 asyncio 调试模式,它会崩溃并显示给我。

Task was destroyed but it is pending!
task: <Task pending coro=<upload.<locals>.upload_coro() done, defined at /media/stuff/stuff/projects/dare/dcds/dcds/__main__.py:58> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7fdf5df01d38>()]> cb=[_chain_future.<locals>._call_set_state() at /home/elviento/anaconda3/lib/python3.6/asyncio/futures.py:414]>

【问题讨论】:

  • 我想我找到了问题所在。我将这些期货保存在 WeakValueDictionary 中。如果我用普通字典替换 WeakValueDictionary,警告和错误就会消失。我认为这可能与 WeakValueDictionary 如何破坏期货有关。
  • 我要尝试一些东西。
  • 我面临着类似的问题。你能解释一下到底是什么问题以及你是如何解决的。
  • @HimanshuJain 解决这个问题已经有一段时间了,但如果我没记错的话,我通过更改代码解决了它,因此它不使用弱值字典。字典没有做的期货需要正确关闭。

标签: python future python-asyncio


【解决方案1】:
Executing <Handle <TaskWakeupMethWrapper object at 0x7fc3435141f8>(<Future finis...ection.py:260>) created at /media/stuff/stuff/projects/dare/dcds/dcds/common/connection.py:221> took 1.723 seconds

这个警告的主要部分是took 1.723 seconds:警告说一些协程(或任务)已经冻结你的事件循环1.7秒,这是不正常的情况(如果你不明白为什么,请阅读答案@987654321 @ 或更好的here)。

正如您所说,asyncio 仅在调试模式打开时才跟踪此问题。

Task was destroyed but it is pending!

无论调试模式如何,您都会收到此警告,这意味着在您调用loop.close() 时,您仍有正在运行的任务。这又不是正常情况(阅读here 了解原因)。


如果没有可重现的代码 sn-p,很难说更多。

如果您将任务存储在 WeakValueDictionary 中,这可能会出现问题,是的。在关闭事件循环之前,您应该 properly cancel 所有任务(或等待它们完成)。

【讨论】:

  • 如果你有很多协程,有没有办法知道哪一个冻结了?
  • @TadejMagajna 恐怕不行,至少我不知道如何实现。
【解决方案2】:

在 Python 的最新版本* 中,您将获得更多关于哪个任务持有事件循环的时间过长的信息。该功能在此处进行了更多讨论:https://bugs.python.org/issue38986

* Python 3.7.6 或 Python 3.8.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-18
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 2012-02-02
    • 1970-01-01
    相关资源
    最近更新 更多