Asyncer,专注于异步和await的开发者体验。
项目描述
Asyncer,专注于异步和await的开发者体验。
文档: https://asyncer.tiangolo.com
源代码: https://github.com/fastapi/asyncer
Asyncer 是建立在 AnyIO 之上的小型库。
Asyncer 包含少量实用函数,使我(@tiangolo - Sebastián Ramírez)在非常主观和主观的观点下,能够更方便地使用 async
、await
和并发代码。
Asyncer 的主要目标是通过提供更好的编辑器中自动完成和内联错误支持,以及通过提供对类型检查工具(如 mypy)的更好支持来确保代码的 无bug,从而提高 开发者体验。
Asyncer 还试图在处理与常规 阻塞代码 混合的 async 代码时提高 便利性 和 简洁性,允许以更简单的方式一起使用它们...当然,这也非常主观。
🚨 警告
这个小库仅存在于能够使用这些 实用函数,直到(如果)它们被集成到 AnyIO 中。
这可能需要一些时间(或者决定是否包含在内)。
因此,我创建了它,以便现在就能使用这些想法。🤓
我能使用它吗?
当然 🎉(但请继续阅读)。
您可以使用它并评估我提出的 库API设计。如果它对您有用,这将非常有用(我希望如此)。
但仍然,把它当作实验材料,预期它会有一些变化。🧪
如果您使用它,请将您的项目中的 Asyncer 版本 粘定,以确保一切正常。
为您的项目编写 测试(您本就应该这么做)。一旦您知道新版本仍然可以正常工作,再升级版本。
尽管如此,它只有 4 个函数,所以没有多少变化,如果需要重构代码以更新某些内容,工作量不会很大。
如果您不想将 asyncer
作为依赖项添加到您的项目中,您也可以只是复制主文件并尝试这些函数,它相当小(但这样您就无法轻松获得更新)。
要求
由于 Asyncer 基于 AnyIO,因此当您安装 Asyncer 时,它也将自动安装。
安装
$ pip install asyncer
---> 100%
Successfully installed asyncer anyio
如何使用
您可以在 教程 中了解 Asyncer 中每个用例和实用函数的更多信息。
作为其中一个实用程序的预览,您可以使用 asyncify()
从异步代码中调用同步代码
import time
import anyio
from asyncer import asyncify
def do_sync_work(name: str):
time.sleep(1)
return f"Hello, {name}"
async def main():
message = await asyncify(do_sync_work)(name="World")
print(message)
anyio.run(main)
Asyncer 的 asyncify()
将在底层使用 AnyIO 来做 聪明的事情,避免阻塞主要的 async 事件循环,并在 工作线程 中运行 sync/阻塞函数。
编辑器支持
Asyncer 中的一切都是为了获得最佳的 开发者体验,并提供最佳的编辑器支持。
- 函数参数的 自动完成
- 返回值的 自动完成
- 编辑器中的 内联错误
- 支持如 mypy 等工具,可以帮助您验证代码的正确性,并防止许多错误。
许可
本项目受 MIT 许可证 的条款约束。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
asyncer-0.0.8.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a589d980f57e20efb07ed91d0dbe67f1d2fd343e7142c66d3a099f05c620739c |
|
MD5 | 48631493f5be58674177b1889685ae66 |
|
BLAKE2b-256 | ff677ea59c3e69eaeee42e7fc91a5be67ca5849c8979acac2b920249760c6af2 |
asyncer-0.0.8-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5920d48fc99c8f8f0f1576e1882f5022885589c5fcbc46ce4224ec3e53776eeb |
|
MD5 | 148ef31eabc1ef2b9a7c03a5257c9ee3 |
|
BLAKE2b-256 | 8a0415b6ca6b7842eda2748bda0a0af73f2d054e9344320f8bba01f994294bcb |