AWS Lambda 并不只能使用回调函数,也可以使用 async/await
来处理异步操作。以下是一个使用 async/await
的示例:
import json
def lambda_handler(event, context):
# 异步处理逻辑
async def async_process():
# 模拟异步操作
await asyncio.sleep(1)
return {'message': 'Hello, async!'}
# 同步处理逻辑
def sync_process():
return {'message': 'Hello, sync!'}
# 判断 Lambda 运行环境是否支持异步
if hasattr(context, 'invokeid'):
# 异步处理
loop = asyncio.get_event_loop()
response = loop.run_until_complete(async_process())
else:
# 同步处理
response = sync_process()
return {
'statusCode': 200,
'body': json.dumps(response)
}
在上述示例中,我们首先定义了一个异步函数 async_process
,模拟了一个异步操作。然后定义了一个同步函数 sync_process
,用于处理无法使用异步的环境。在 Lambda 处理函数 lambda_handler
中,通过判断 Lambda 运行环境是否支持异步来选择使用异步或同步处理逻辑。最后,根据处理结果返回相应的响应内容。
需要注意的是,只有当 Lambda 运行环境支持异步时,才能使用 async/await
,否则会导致错误。