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)支持来增加代码无错误的确定性,从而提高开发者体验。
Asyncer还试图提高与同步代码(非异步代码)混合使用异步代码时的便利性和简单性,允许以更简单的方式使用它们...当然,这是基于我非常主观的观点。
🚨 警告
这个小库仅存在于能够使用这些直到(如果)它们集成到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来执行智能操作,避免阻塞主异步事件循环,并在工作线程中运行同步/阻塞函数。
编辑器支持
Asyncer中的所有内容都是为获得最佳的开发者体验而设计的,具有最佳的编辑器支持。
- 函数参数的自动补全
- 返回值的自动补全
- 编辑器中的行内错误
- 支持如mypy之类的工具,这些工具可以帮助您验证代码的正确性,并防止许多错误。
许可证
本项目采用MIT许可协议。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源代码分发
构建分发
asyncer_slim-0.0.8.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 15f19c48b65ad85f3ccd5d7fef2b54bfb7bf1cf657b3070afb81f890003be126 |
|
MD5 | b1079ce14fc639974f1174332b044c94 |
|
BLAKE2b-256 | b502682c7905e37dceaa8b5b1fd2fefe9f62fbefe527e5b51014d3001ec661d5 |
asyncer_slim-0.0.8-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cc593bc9b5d0ad6e0dd46a9bb22ef6676a40fc280e45f22c7d762eebd3e1ca2d |
|
MD5 | 7ac84c6ebff5a0b716ac514afe524ea4 |
|
BLAKE2b-256 | 59e15a579dc5a01c4a62260d94267679e2833b659becc90a14f88a5e464e257e |