首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何替换asyncio.get_event_loop()以避免DeprecationWarning?

如何替换asyncio.get_event_loop()以避免DeprecationWarning?
EN

Stack Overflow用户
提问于 2022-09-28 15:30:27
回答 1查看 142关注 0票数 1

下面的代码工作正常,但我有点困惑于以下内容:

代码语言:javascript
运行
复制
DeprecationWarning: There is no current event loop
  loop = asyncio.get_event_loop()

代码语言:javascript
运行
复制
DeprecationWarning: There is no current event loop
  loop.run_until_complete(asyncio.gather(*coroutine_list))

警告。

我找到了,但我困惑的是如何更新我的代码。我知道现在还没有一个偶数循环,但是我如何设置它呢?我以为我需要用asyncio.new_event_loop()来改变asyncio.new_event_loop(),但这似乎行不通。

这是我的密码

代码语言:javascript
运行
复制
async def flush(self, queue_c) -> None:
    try:
        loop = asyncio.get_running_loop()
        result_objects_action = loop.run_in_executor(None, self.create_objects, queue_c)
        # do stuff
    except:
        # except handling

def _run_queue(self) -> None:
    coroutine_list = []
    c = 0
    while c < len(self._queue):
        coroutine_list.append(self.flush(c))
        c+=1
    # What should be changed here?
    loop = asyncio.get_event_loop()
    loop.run_until_complete(asyncio.gather(*coroutine_list))
    self._queue = []
EN

回答 1

Stack Overflow用户

发布于 2022-09-28 16:17:34

调用asyncio.new_event_loop()是不够的,您需要在使用asyncio.set_event_loop(循环)之后设置它。我相信python3.10引入了get_event_loop()的这个弃用警告。下面是如何设置事件循环,以便它可以与任何python 3.x版本一起工作:

代码语言:javascript
运行
复制
import sys
import asyncio

if sys.version_info < (3, 10):
    loop = asyncio.get_event_loop()
else:
    try:
        loop = asyncio.get_running_loop()
    except RuntimeError:
        loop = asyncio.new_event_loop()

    asyncio.set_event_loop(loop)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73884117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档