繁体   English   中英

在带有工作层的Elastic Beanstalk上使用Django设置计划的/ cron作业

[英]Setting up a scheduled / cron job with Django on Elastic Beanstalk with a Worker Tier

我目前正在将Django网站从我自己的运行Ubuntu的托管服务器迁移到AWS Elastic Beanstalk。

到目前为止,我发现该过程有些简单明了-直到尝试为我的应用设置一些计划的工作。 据我所知,我想使用cron.yaml文件在工人层环境中运行cron作业。 我已经阅读了以下文档: http : //docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html#worker-periodictasks

并阅读博客文章: https : //medium.com/@joelennon/running-cron-jobs-on-amazon-web-services-aws-elastic-beanstalk-a41d91d1c571#.mx7dq9ufo

以及各种StackOverflow帖子,但我觉得我仍然缺少一些有关实际上构成我的工人层环境的基本概念。 在我自己的服务器上,我可以简单地设置一个cron作业来满足此需求-因此,这个概念对我来说是相当新的。 我还在Heroku上运行了一些Django应用程序,这些应用程序使用了Web和辅助测功机,异步处理,Redis和Celery以及计划的作业,但是我不知道如何将其转换为Elastic Beanstalk世界。

基本上,我想了解的概念是:

  1. 就代码而言,实际上是什么构成了我的工人层环境? 显然不仅仅是cron.yaml文件。 这是否也是我的Web应用程序的精确克隆,也已部署到此环境? 还是可以以某种方式引用我的网络环境中的代码并以这种方式运行?
  2. 还是工作者应用程序完全是自己的全新应用程序? 我需要创建一个单独的成熟的Django / Flask应用程序来执行此操作吗?
  3. 我的工作者应用程序如何与我的Web应用程序进行物理对话? cron.yaml中的POST消息实际上意味着如何在Web应用程序上执行作业? 如果它是一个独立的应用程序,那么工作人员和Web环境实际上是如何链接的?

我本质上是想安排一些Django管理命令。 我也将方法公开为POST端点,但无法弄清楚如何使工作环境与Web应用程序对话/执行作业。

请原谅我,真的很感谢有关此概念如何组合的任何建议和指导。

因此,我最后和一个对AWS服务更加熟悉的朋友交谈。 他解释了这些概念,并通过如下设置工作环境来使计划的作业运行:

  • 为Web环境构建了一个独立的独立应用程序。 我构建了一个单独的“ worker” Django应用,但这可以是Flask或其他任何框架或语言
  • 创建了一个名为“ cron”的应用程序,该应用程序具有用于处理到不同端点的POST消息的视图,这些视图本质上是我想执行的计划作业。 这些端点是我的cron.yaml文件中的作业直接定向到的端点
  • 由于我的工作需要对Web应用程序进行数据库更改,因此我将工作器应用程序设置为使用与Web应用程序相同的数据库。 这就像将RDS环境变量添加到我的工作人员环境配置中一样简单。 例如。 将RDS_DB_NAME,RDS_HOSTNAME和RDS_USERNAME设置为指向Web环境数据库

等等,计划的作业按计划执行,并根据需要更改数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM