跳转到主要内容

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)支持来增加代码无错误的确定性,从而提高开发者体验。

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 (18.2 kB 查看哈希值)

上传时间 源代码

构建分发

asyncer_slim-0.0.8-py3-none-any.whl (9.3 kB 查看哈希值)

上传时间 Python 3

由以下支持