我有一个 Python 3.6 - Flask 应用程序使用Zappa部署到 AWS Lambda 上,其中我有一个使用 @Task 定义的异步任务执行函数,如此处所述
但是,我发现函数调用仍然超时 30 秒,而 AWS Lambda 对非 API 调用强制执行 5 分钟超时。我什至在我的 Lambda 设置中检查了超时,它设置为 5 分钟。
我发现这种情况的方式是当 lambda 的调试输出在没有请求的情况下开始重复时 - 发生这种情况是因为由于错误或超时(根据 AWS Lambda 文档), lamba 被调用了 2 次以上。
谁能帮我解决这个问题?
[编辑:lambda 函数也不是任何 VPC 的一部分,并且设置为可从 Internet 访问。]
以下是日志。基本上,倒计时是一个计数到 20 秒的睡眠计时器,然后是对 application.reviv_assign_responder 的@task 调用,但正如我们所见,在“NEAREST RESPONDER”之后没有输出,倒计时再次开始,表明该函数已计时出来并被(AWS')设计再次调用。
Log output in Pastebin : https://pastebin.com/VEbdCALg
Second incident - https://pastebin.com/ScNhbMcn
正如我们在第二个日志中看到的,它清楚地指出:
[1515842321866] wait_one_and_notify : 30 : 26 [1515842322867] wait_one_and_notify : 30 : 27 [1515842323868] wait_one_and_notify : 30 : 28 [1515842324865] 2018-01-13T11:18:44.865Z 72a8d34a-f853-11e7-ac2f-dd12a3d35bcb Task timed out after 30.03 秒