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能及时升级。

浙公网安备 33010602011771号