Setting up a scheduled / cron job with Django on Elastic Beanstalk with a Worker Tier
我目前正在将Django网站从运行Ubuntu的托管服务器迁移到AWS弹性Beanstalk。
到目前为止,我发现这个过程有点直截了当——直到尝试为我的应用程序设置一些预定的作业。据我所知,我希望使用
阅读博客文章:https://medium.com/@joelennon/running-cron-jobs-on-amazon-web-services-aws-leastic-beanstalk-a41d91d1c571.mx7dq9ufo
以及各种stackoverflow帖子,但我觉得我仍然缺少一些基本的概念,这些概念实际上构成了我的工作层环境。在我自己的服务器上,我可以简单地设置一个cron作业来满足这个需求——所以这个概念对我来说是相当新的。我也有一些Django应用程序在Heroku上运行,它们使用Web和Worker Dynos、异步处理、Redis和Cellery以及预定的作业,但我不知道如何将其转换为弹性Beanstalk世界。
基本上,我想了解的概念是:
我基本上想安排一些django管理命令。我也将方法公开为后端点,但不知道如何让工作环境与Web应用程序上的作业进行对话/执行作业。
请原谅我的幼稚,我真的很感激任何关于这个概念如何结合的建议和指导。
最后我和一个更熟悉AWS服务的朋友聊了起来。他解释了这些概念,我通过如下设置工人环境来运行计划的作业:
- 为Web环境构建单独的独立应用程序。我构建了一个单独的"Worker"Django应用程序,但它可以是flask或任何其他框架或语言。
- 创建了一个名为"cron"的应用程序,它有视图来处理发送到不同端点的消息,这基本上是我想要执行的计划作业。这些端点是我的
cron.yaml 文件中的作业直接指向的 - 由于我的工作需要对Web应用程序进行数据库更改,因此我将Worker应用程序设置为使用与Web应用程序相同的数据库。这就像在我的工作环境配置中添加RDS环境变量一样简单。例如,将rds_db_name、rds_hostname、rds_username设置为指向web环境数据库
et voila,按计划执行的作业,并根据需要更改数据库。