【问题标题】:Schedule python scripts to run in AWS安排 python 脚本在 AWS 中运行
【发布时间】:2016-09-29 22:37:45
【问题描述】:

我有 3 个 python 脚本,我想安排它们在 AWS 中的不同时间运行。目前,我有这 3 个脚本驻留在 EC2 实例中,我使用 cron 运行它们。第一个和第二个脚本将一些数据下载到 EC2 机器上的特定目录(比如/home/ec2-user/data)。第三个使用下载的数据运行。

有时,前两个脚本之一失败会导致第三个脚本也失败。但是,我无法通过cron 重试失败的脚本,除非我在脚本中构建故障恢复逻辑。另外,我对使用 EC2 实例不满意。这不是一个好的解决方案。最好使用 AWS 服务。

我想知道AWS Lambda 在这里使用是否是一项好服务?如果是这样,我如何指定将数据下载到哪里,以及让第三个脚本从哪里读取数据?

或者 AWS 中是否有其他服务最适合这种情况?

【问题讨论】:

    标签: python amazon-web-services cron aws-lambda


    【解决方案1】:

    是的,您可以为此使用 aws lambda。您可以使用 s3 来满足您的数据存储需求。

    您可能需要考虑的一个限制是允许执行作业的最长时间为 300 秒。

    参考: http://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.html

    【讨论】:

      【解决方案2】:

      从 AWS Elastic Beanstalk 检查工作器环境。这将启动一个 EC2 和一个 SQS 队列,由 AWS EB 自动管理 - Docs 和一个简单的 tutorial。在当前上下文中,脚本必须以某种方式进行通信,因为第三个脚本受第二个脚本的制约。运行脚本需要多少时间?可以合并脚本吗?请提供更多详细信息。

      【讨论】:

      • 第一个脚本需要 3 分钟完成,下一个需要 10 分钟。
      • Lambda 的最大执行时间为 300 秒。 Elastic Beanstalk 可以达到 1800 秒,并且可以选择根据响应和/或超时重试执行 - Worker Details。我建议创建一个主脚本来管理其他脚本。如果失败,主脚本会返回错误,这样 EB 会重新将作业添加到 SQS 队列中。
      猜你喜欢
      • 1970-01-01
      • 2020-06-10
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2013-11-27
      • 2023-03-13
      • 2018-09-12
      • 1970-01-01
      相关资源
      最近更新 更多