使用 get_event_loop() 时,所有脚本都为我工作,但我收到弃用警告“DeprecationWarning:没有当前事件循环”(“没有当前事件循环”)。据我了解,在 Python 3.10 之前的某一天,这很有可能会停止工作。总的来说,我不太喜欢带有未解决警告的风格,他们有时会在之后安排有趣的生活:-)
- 现在有没有一种简单的方法来使用其他东西,这样警告就不会出现?
- 这条消息的物理意义是什么?这是所需循环的某个实例 - 然后在 run_until_complete 中启动。这是什么意思:“没有当前的事件循环”,但那是什么?(显然,单线程单循环的故事看起来很奇怪,但 PEP 492 在第一行明确指出“此 PEP 假定异步任务由事件循环调度和协调”,即此循环基础)。(Python刚刚开始学习,所以如果问题不是很深,我很抱歉)。
这是一个示例代码:
import asyncio
async def demo():
print(await out())
async def out():
return "Тест"
event_loop = asyncio.get_event_loop() #к этой строке предупреждение
event_loop.run_until_complete(demo())
总之,感谢@Sergey Shashko 的提示,我使用 asyncio.run() 并且不再发出警告。更新的代码如下。关于更复杂情况的一些附加信息在评论中,以及关于事件循环等的完整信息。(非常、复杂和有趣)——在 docs.python.org。(例如,事件循环页面和相关页面)。