【发布时间】:2014-08-21 16:59:32
【问题描述】:
我正在尝试使用 Amazon Elastic Beanstalk 运行一个非常长的数值模拟 - 长达 20 小时。当我告诉它做一个简短的 20 秒模拟时,代码运行良好。但是,当运行更长的时间时,我收到错误“以下实例在允许的命令超时时间内没有响应(它们最终可能仍会自行完成)”。
浏览网页后,在我看来,问题在于 Elastic Beanstalk 允许工作进程最多运行 30 分钟,然后由于实例没有响应(即完成模拟)而超时。一些人提出的解决方案是每 30 秒左右发送一条消息,以便“ping”Elastic Beanstalk,让它知道模拟进展顺利,因此它不会超时,这会让我运行一个很长的工作进程。所以我有几个问题:
- 这是正确的方法吗?
- 如果是这样,我将向项目添加什么代码或配置以使其停止提前终止?
- 如果没有,我如何才能在 AWS 或更一般的云上顺利运行 12 小时以上的模拟?
添加信息 谢谢你的反馈,罗希特。为了提供更多信息,我将 Python 与 Flask 一起使用。
• 我确实在使用带有 SQS 队列的 Elastic Beanstalk 工作层
• 在我的代码中,我正在运行可变长度的模拟 - 从短至 20 秒到长达 20 小时。 Elastic Beanstalk 所做的工作中有 99% 是运行模拟。另外 1% 涉及保存结果、发送电子邮件等。
• 模拟本身涉及使用生成许多随机数和使用我定义的对象。我在这里大量使用 numpy。
如果我能提供更多信息,请告诉我。我非常感谢您的帮助:)
【问题讨论】:
-
您是否将 Elastic Beanstalk 工作程序层与 SQS 队列一起使用?代码的哪一部分需要 20 秒?你能澄清一下吗?
标签: amazon-web-services amazon-elastic-beanstalk