Python Python3.9使用uvloop丟擲NotImplementedError異常
阿新 • • 發佈:2022-04-06
一、問題描述
程式碼
''' @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能及時升級。