kil*_*ahn 5 flask python-3.x zappa aws-lambda
我有一个Python 3.6 -使用部署到AWS LAMBDA瓶应用扎帕,其中我有使用@task定义的异步任务执行功能所讨论这里
但是,我发现函数调用仍然在30秒后超时,而AWS Lambda对非API调用强制执行的5分钟超时。我什至在Lambda设置中检查了超时,并将其设置为5分钟。
我发现此问题的方式是lambda的调试输出开始无请求重复的情况-发生这种情况是因为错误或超时(根据AWS Lambda文档),又两次调用了lamba。
谁能帮助我解决这个问题?
[编辑:lambda函数也不是任何VPC的一部分,并且设置为可从Internet访问。]
这是下面的日志。基本上,倒计时是一个20秒的睡眠计时器,然后是@task调用application.reviv_assign_responder,但正如我们所见,“ NEAREST RESPONDER”没有溢出,并且倒计时再次开始,表明该功能已计时并被(AWS')设计再次调用。
Log output in Pastebin : https://pastebin.com/VEbdCALg
Second incident - https://pastebin.com/ScNhbMcn
Run Code Online (Sandbox Code Playgroud)
正如我们在第二个日志中看到的那样,它清楚地指出:
[1515842321866] wait_one_and_notify:30:26 [1515842322867] wait_one_and_notify:30:27 [1515842323865] wait_one_and_notify:30:28 [1515842324865] 2018-01-13T11:18:44.865Z 72a8d34a-f853-11e7-ac2f-out12bd3d后30.03秒
您可以在此处检查 Zappa 适用于所有 lambda 函数的默认设置,您将看到默认timeout_seconds设置为 30 秒,这将适用于 AWS 控制台中的默认 Lambda 设置,因为默认情况下这是 3 秒(您可以在AWS Lambda 常见问题中查看此限制。
对于您的文件,@Task您必须增加/设置您timeout_seconds的zappa_settings.(json|yaml)文件并重新部署它,您可以放置 5 分钟(5*60==300 秒),但此增加将用于您在使用 zappa 部署的 virtualenv 中定义的所有函数。
您可以在 Zappa repo 中查看此问题中公开的更多详细信息。
timeout_secondsZappa 中的参数具有误导性。也就是说,它确实限制了 Lambda 函数的超时,但是请求是通过 CloudFront 提供的,它的默认超时为 30 秒。为了验证,尽量降低了timeout_seconds对20-它将正确超时20秒。但是30由于 CloudFront 限制,过去没有任何影响。
默认超时为 30 秒。您可以将值更改为 4 到 60 秒。如果您需要超出该范围的超时值,请请求更改限制。
换句话说,您在 Zappa 或 Lambda 中无法解决此问题,因为问题出在其他地方 (CloudFront)。
我自己还没有尝试过,但是您可能可以通过在 Lambda 前面创建 cloudfront 分布来提高限制,尽管您似乎仍然受到 max 的限制。60 秒(除非您通过 AWS 支持请求更多,如上一个链接所示)。
| 归档时间: |
|
| 查看次数: |
1524 次 |
| 最近记录: |