我正在使用boto来调用我的Lambda函数并测试后端。我希望以异步方式调用它们。我注意到"invoke_async"已被弃用,不应再使用。相反,您应该使用InvocationType为"Event"的"invoke"来异步执行函数。
但是,当函数返回时,我似乎无法得到响应。我尝试了以下方法:
payload3=b"""{
"latitude": 39.5732160891,
"longitude": -119.672918997,
"radius": 100
}"""
client = boto3.client('lambda')
for x in range (0, 5):
response = client.invoke(
FunctionName="loadSpotsAroundPoint",
InvocationType='Event',
Payload=payload3
)
time.sleep(15)
print(json.loads(response['Payload'].read()))
print("\n")
即使我告诉代码要睡15秒钟,当我尝试打印它时,响应变量仍然为空。如果我将 InvokationType 更改为 "RequestResponse",一切都可以正常工作,响应变量会打印出来,但这是同步的。我错过了什么简单的东西吗?当异步调用返回时,如何执行一些代码,例如打印结果?谢谢。
bytes(json.dumps(payload), "utf-8")
,否则会抛出一个错误。 - Ben BalentinePayload = json.dumps(payload)
。 - AslanThreadPoolExecutor
在单个处理器的多个线程上执行此操作。你可能在考虑ProcessPoolExecutor
,它启动多个进程(因此可以利用多个处理器)。 - Julien