首页 > 解决方案 > 编写一个兼容 python 2 和 3 的异步协程

问题描述

通常要编写兼容 python 2/3 的代码,您需要遵循两种解释器都可以理解的某种风格,例如:https ://python-future.org/compatible_idioms.html 。

但是,由于 asyncio 引入了async defand之类的语法await function(),如果在 Python 2 下运行,这将导致解析错误。

你如何编写一个兼容 python 2 和 python 3 并且仍然可以提供 asyncio 接口的库?如果没有简单的方法可以做到这一点,是否可以在库中制作某个只能在 python 3.5+ 中导入的异步子模块?

标签: pythonpython-3.xasynchronouspython-asyncio

解决方案


在 Python 2 中支持异步风格的协程是不可能的,因为 Python 2 没有:

  • async defawait;
  • 他们的前任yield from
  • 任何形状或形式的 asyncio 库本身。

有一个项目使用普通的生成器创建 Python 2 版本的 asyncio yield from,但几年前就被放弃了。


推荐阅读