【发布时间】:2016-11-26 03:45:32
【问题描述】:
所以我在 Django Elastic Beanstalk 应用程序中有一个功能如下:
- 下载文件
- 解析文件,使用文件中的数据运行一些 API 调用
- 用新数据更新 EB 实例的数据库
在我刚刚设置本地 cron 作业的测试实例中。我刚刚在我的 Django 应用程序的特定 URL 上调用了wget,它将运行该命令。
我的问题是如何在多实例 Elastic Beanstalk 应用程序中处理这个问题。只有我的 EB 应用程序的一个实例应该运行此命令。我想避免数据库上的竞争条件和从多个实例对外部 API 的冗余调用。即只有一个实例应该写入数据库。
但是,谷歌搜索显示设置 cron 作业很尴尬,特别是如果您像我一样是 EB 新手。听起来最有前途的方法似乎是cron.yaml 方法,但据我所知,似乎没有在网络上任何地方设置 cron 工作环境的示例。
我的理解是:
- 您在 EB 项目的根目录中包含一个 cron.yaml 文件。
- 部署项目
- cron 作业是在工作环境中自动设置的 (?)。
- 您定义的命令在指定时间运行。
我的问题是如何确保只有一个实例会运行此命令?我对cron.yaml 的工作原理是否有正确的想法,或者我缺少什么
【问题讨论】:
标签: python django amazon-web-services cron amazon-elastic-beanstalk