gpt4 book ai didi

python-3.x - 在 aws lambda 中完成工作之前对请求的 200 ok 响应

转载 作者:行者123 更新时间:2023-12-05 07:14:28 28 4
gpt4 key购买 nike

我试图在工作完成之前对请求做出 200 ok 响应,但是我需要做的工作花费的时间比我做出响应所需的 3 秒要长。

我在 aws lambda 工作,我的方法是通过线程:

t = threading.Thread(target=worker, args=(xml,))
t.start()

# So that you can return before worker is done
return response(200)

但是,即使我在后台线程化要完成的工作,aws lambda 似乎也无法完成工作。似乎一旦做出响应,lambda 就关闭了。例如,如果工作需要 2 秒才能完成,那么以下将不起作用:

t = threading.Thread(target=worker, args=(xml,))
t.start()

# So that you can return before worker is done
return response(200)

但是如果我们睡 2 秒,工作就会完成:

t = threading.Thread(target=worker, args=(xml,))
t.start()
time.sleep(2)
# So that you can return before worker is done
return response(200)

如果是这样,我该怎么做才能使用 aws lambda 对请求做出 200 ok 响应,同时还要在同一个 lambda 函数中完成工作?

最佳答案

线程解决方案不起作用,因为一旦您发送响应,您的 Lambda 环境就会关闭。您需要在 async 而不是 event 模式下触发 AWS Lambda 函数。参见 this guide寻找一种可能的解决方案。

或者,您可以让当前的 Lambda 函数简单地调用另一个具有 async 事件类型的 Lambda 函数来完成所有实际工作,然后返回 200 响应代码。

关于python-3.x - 在 aws lambda 中完成工作之前对请求的 200 ok 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59902548/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com