Python Python3.9使用uvloop抛出NotImplementedError异常

一、问题描述

代码

'''
@Date         : 2020-10-20 14:17:15
@LastEditors  : Pineapple
@LastEditTime : 2020-10-30 17:42:21
@FilePath     : /Bus_station/#test.py
@Blog         : https://blog.csdn.net/pineapple_C
@Github       : https://github.com/Pineapple666
'''
import asyncio

import aiohttp
import uvloop
from loguru import logger

url = 'https://www.baidu.com'
uvloop.install()
tasks = []


async def func():
    async with aiohttp.ClientSession() as session:
        async with session.get(url=url, verify_ssl=False) as response:
            if response.status == 200:
                await response.text()
                logger.success('Get 200')


async def main():
    for i in range(10):
        tasks.append(asyncio.create_task(func()))
    await asyncio.wait(tasks, timeout=2)

if __name__ == "__main__":
    asyncio.run(main())

运行结果
在这里插入图片描述
听说用uvloop替换python自带的asyncio的事件循环,协程效率至少翻一番?饶有兴致的下了这个第三方模块。结果执行代码半路就报错,抛出NotImplementedError异常,一脸懵逼的我百度了一会也没找到答案。

二、问题分析

uvloop是MagicStack的一个开源项目,我猜测可能是Python3.9刚出来目前还不支持吧,本想去git上向他们反映一下,没想到早就有大佬提了issus
在这里插入图片描述
我发现下Python3.9就是个错误的选择,本来在Linux上的编译安装就比较麻烦,还要解决一大堆依赖问题。前不久才费尽心思搞定了Scrapy的安装。能跑爬虫已经是不错了,这种问题也就忍了吧。希望uvloop能及时升级。

posted @ 2022-04-06 15:06  王舰  阅读(208)  评论(0编辑  收藏  举报