1. 程式人生 > 其它 >Python Python3.9使用uvloop丟擲NotImplementedError異常

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能及時升級。