相关疑难解决方法(0)

异步上下文管理器

我有一个异步API,我用它连接并发送邮件到SMTP服务器,它有一些设置和拆除它.所以它很适合使用contextmanagerPython 3的contextlib.

虽然,我不知道它是否可能写,因为它们都使用生成器语法来编写.

这可能会证明问题(包含yield-base和async-await语法的混合,以演示异步调用和上下文管理器的收益之间的差异).

@contextmanager
async def smtp_connection():
    client = SMTPAsync()
    ...

    try:
        await client.connect(smtp_url, smtp_port)
        await client.starttls()
        await client.login(smtp_username, smtp_password)
        yield client
    finally:
        await client.quit()
Run Code Online (Sandbox Code Playgroud)

目前python中有可能出现这种情况吗?with as如果是,我将如何使用声明?如果没有,我可以用另一种方式实现这一点 - 也许使用旧式上下文管理器?

python asynchronous contextmanager

31
推荐指数
3
解决办法
1万
查看次数

标签 统计

asynchronous ×1

contextmanager ×1

python ×1