跳转到主要内容

Asyncer,专注于异步和await的开发者体验。

项目描述

Asyncer

Asyncer,专注于异步和await的开发者体验。

Test Publish Coverage Package version


文档: https://asyncer.tiangolo.com

源代码: https://github.com/fastapi/asyncer


Asyncer 是建立在 AnyIO 之上的小型库。

Asyncer 包含少量实用函数,使我(@tiangolo - Sebastián Ramírez)在非常主观和主观的观点下,能够更方便地使用 asyncawait 和并发代码。

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)

Asyncerasyncify() 将在底层使用 AnyIO 来做 聪明的事情,避免阻塞主要的 async 事件循环,并在 工作线程 中运行 sync/阻塞函数。

编辑器支持

Asyncer 中的一切都是为了获得最佳的 开发者体验,并提供最佳的编辑器支持。

  • 函数参数的 自动完成
  • 返回值的 自动完成
  • 编辑器中的 内联错误
  • 支持如 mypy 等工具,可以帮助您验证代码的正确性,并防止许多错误。

许可

本项目受 MIT 许可证 的条款约束。

项目详情


下载文件

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

源分布

asyncer-0.0.8.tar.gz (18.2 kB 查看哈希值)

上传时间

构建分布

asyncer-0.0.8-py3-none-any.whl (9.2 kB 查看哈希值)

上传时间 Python 3

由以下支持