【发布时间】:2022-01-31 16:17:32
【问题描述】:
我想同步调用一个 lambda 函数(请求 - 响应),但想使用 python async-await 来await 响应。
response = await client.invoke('my-func', InvocationType='RequestResponse', Payload='...'))
我找到了一种解决方案here,但它很麻烦,而且从 2016 年开始。
今天有更好的方法吗?
【问题讨论】:
-
boto3 不支持异步。所以除非你把它放在一个单独的线程中,否则它会阻塞。
-
您能描述一下您希望这样做吗?如果您希望调用是同步的(确实如此),则不需要
await。 -
@dirn 我认为这行代码几乎可以解释它。也许您将 python asyncio
await与 lambda 同步调用混淆了?它们使用相同的术语,但它们是在完全不同的层次上实现的完全不同的概念。 -
但是你还没有解释那行代码应该做什么。等待同步操作是什么意思?如果不是与 asyncio 关联的
await,那是什么await? asyncio 标签可能应该从问题中删除,因为它是不相关的。 -
boto3 不适用于 asyncio。为此,您需要使用 aioboto3。否则,您将需要使用来自
concurrent.futures的ThreadPoolExecutor。
标签: python boto3 python-asyncio