python - 编写一个兼容 python 2 和 3 的异步协程
问题描述
通常要编写兼容 python 2/3 的代码,您需要遵循两种解释器都可以理解的某种风格,例如:https ://python-future.org/compatible_idioms.html 。
但是,由于 asyncio 引入了async def
and之类的语法await function()
,如果在 Python 2 下运行,这将导致解析错误。
你如何编写一个兼容 python 2 和 python 3 并且仍然可以提供 asyncio 接口的库?如果没有简单的方法可以做到这一点,是否可以在库中制作某个只能在 python 3.5+ 中导入的异步子模块?
解决方案
在 Python 2 中支持异步风格的协程是不可能的,因为 Python 2 没有:
async def
和await
;- 他们的前任
yield from
; - 任何形状或形式的 asyncio 库本身。
有一个项目使用普通的生成器创建 Python 2 版本的 asyncio yield from
,但几年前就被放弃了。
推荐阅读
- vue.js - 如何通过动态道具
- javascript - 添加新形状后画布不渲染形状
- django - 如何在 django 中创建一个具有多个模型之一的外键的模型?
- jquery - 在悬停时显示元素延迟
- java - 如何在另一个应用程序模块中使用项目源代码
- sql - 在 UPDATE 查询中使用 IN 子句的语法错误
- javascript - Mongoose connectio occured MongoNetworkError: connection 0 to cluster0-shard-00-01-utzss.mongodb.net:27017 closed error
- core-audio - Core Audio MIDI Synth AU & MusicPlayer - Cannot be pulled by AudioUnitRender programmatically
- scala - Why the code is not producing the output as it is supposed to be in the logic implemented?
- firebase - Flutter Retrieve Data from Firebase