asyncio/aiohttp中的create_task()阻塞了事件循环,使用"This event loop is already running"进行结果收集。
创始人
2024-09-21 06:02:23
0

在asyncio/aiohttp中,如果使用create_task()方法创建任务时,事件循环已经在运行中,会引发"This event loop is already running"的错误。这是因为事件循环在运行时是不能被阻塞的。

要解决这个问题,可以使用ensure_future()方法来替代create_task()方法。ensure_future()方法会自动判断事件循环是否在运行,如果是,则直接创建任务并添加到事件循环中;如果不是,则会创建一个新的任务并运行事件循环。

以下是使用ensure_future()方法的代码示例:

import asyncio
import aiohttp

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def main():
    async with aiohttp.ClientSession() as session:
        task = asyncio.ensure_future(fetch(session, 'https://example.com'))
        response = await task
        print(response)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

在上面的示例中,我们使用了ensure_future()方法创建了一个任务并将其添加到事件循环中。然后,我们使用run_until_complete()方法来运行事件循环,直到任务完成。

这样就能避免阻塞事件循环并解决"This event loop is already running"的问题。

相关内容

热门资讯

重大推荐!西兵辅助器(潮汕汇鱼... 重大推荐!西兵辅助器(潮汕汇鱼虾蟹修改器)果然有作弊器开挂辅助脚本(有挂讲解);致您一封信;亲爱潮汕...
科技通报!九游辅助工具(闲逸a... 科技通报!九游辅助工具(闲逸app透视版)从前有作弊挂开挂辅助下载(有挂规律);1.闲逸app透视版...
教程攻略!微信九游大厅辅助(闲... 教程攻略!微信九游大厅辅助(闲来辅助神器免费版)原生有作弊器开挂辅助脚本(有挂方针);教程攻略!微信...
一起来讨论!新九五有脚本(德普... 一起来讨论!新九五有脚本(德普之星辅助工具如何设置)先前有作弊挂开挂辅助下载(有挂详情);德普之星辅...
玩家必看秘籍!樱花之盛辅助器下... 玩家必看秘籍!樱花之盛辅助器下载(hhpoker辅助器下载)从来有作弊挂开挂辅助脚本(真的有挂);樱...
每日必备!神兽互娱辅助免费(新... 每日必备!神兽互娱辅助免费(新天道透视辅助器免费)原生有作弊器开挂辅助插件(有挂分析);是一款可以让...
盘点一款!新悠悠辅助(西西软件... 盘点一款!新悠悠辅助(西西软件游戏辅助)最初有作弊挂开挂辅助工具(真的有挂);西西软件游戏辅助软件透...
两分钟辅助挂!福建大菠萝隐藏a... 两分钟辅助挂!福建大菠萝隐藏app玩法,新玄龙辅助,介绍教程(有挂猫腻)运辅助工具,进入游戏界面。进...
透视数据!wepoker私人局... 透视数据!wepoker私人局透视,aapoker可以设置抽水,专业教程(有挂详细);aapoker...
七分钟辅助挂!雀友会广东潮汕麻... 七分钟辅助挂!雀友会广东潮汕麻雀开挂,心悦踢辅助软件,必赢方法(有挂技巧)1、起透看视 透明视辅助2...