跳转到主要内容

asyncio/Twisted/Trollius之间的兼容性API

项目描述

Version Build Workflow Deploy Workflow Coverage Docs

txaio 是一个辅助库,用于编写可以在 Twistedasyncio / Trollius 上运行且无需修改的代码。

这类似于 six,但是用于处理Twisted和asyncio之间的差异,使得代码可以在两者上无需修改即可运行(即源代码兼容性)。换句话说:您的用户可以选择他们想要依赖asyncio还是Twisted。

注意,采用这种方法,用户代码将在Twisted或asyncio的本地事件循环下运行。这与使用某些事件循环适配器将一个事件循环附加到另一个事件循环不同。

平台支持

txaio在CPython 3.6+和PyPy 3上运行,在Twisted或asyncio之上。具体来说,txaio已在以下平台上进行了测试:

  • CPython 3.6和3.9在Twisted 18.7、19.10、trunk以及asyncio(stdlib)上

  • PyPy 3.6和3.7在Twisted 18.7、19.10、trunk以及asyncio(stdlib)上

> 注意:txaio版本18.8.1及以下支持Python 2.7和Python 3.4。从版本20.1.1开始,txaio仅支持Python 3.5+。从版本20.12.1开始,txaio仅支持Python 3.6+。

它是如何工作的

txaio不是直接导入、实例化和使用Deferred(针对Twisted)或Future(针对asyncio)对象,而是提供辅助函数来为您完成这些操作,以及相关的添加回调或错误处理等功能。

这显然会改变您的代码风格,但您可以在运行时(或导入时)选择使用哪个底层事件循环。这意味着您可以编写一个代码库,该代码库可以在Twisted或asyncio上运行(无需Twisted依赖),如您或您的用户所愿。

以下代码可以在任何系统上运行

import txaio
txaio.use_twisted()  # or .use_asyncio()

f0 = txaio.create_future()
f1 = txaio.as_future(some_func, 1, 2, key='word')
txaio.add_callbacks(f0, callback, errback)
txaio.add_callbacks(f1, callback, errback)
# ...
txaio.resolve(f0, "value")
txaio.reject(f1, RuntimeError("it failed"))

请参阅文档以了解库功能的描述和使用方法。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

txaio-23.1.1.tar.gz (53.7 kB 查看哈希)

上传时间 源代码

构建发行版

txaio-23.1.1-py2.py3-none-any.whl (30.5 kB 查看哈希)

上传时间 Python 2 Python 3

支持者