【发布时间】:2016-06-30 17:49:01
【问题描述】:
我目前正在将 Django 网站从我自己的运行 Ubuntu 的托管服务器迁移到 AWS Elastic Beanstalk。
到目前为止,我发现该过程有些简单 - 直到尝试为我的应用设置一些预定的作业。据我所知,我想使用 cron.yaml 文件在工作层环境中运行 cron 作业。我已经阅读了文档:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html#worker-periodictasks
还有各种 StackOverflow 帖子,但我觉得我仍然缺少一些关于实际构成我的工作层环境的基本概念。在我自己的服务器上,我可以简单地设置一个 cron 作业来满足这个需求——所以这个概念对我来说是相当新的。我还有一些在 Heroku 上运行的 Django 应用程序,它们使用 web 和 worker dynos、异步处理、Redis 和 Celery 以及计划作业,但我不知道如何将其转化为 Elastic Beanstalk 世界。
基本上,我想了解的概念是:
- 就代码而言,实际上是什么构成了我的工作层环境?显然不仅仅是 cron.yaml 文件。这是我的网络应用程序的精确克隆,也部署到了这个环境吗?或者这可以以某种方式引用我的网络环境中的代码并以这种方式运行吗?
- 或者工作应用程序完全是它自己的全新应用程序?我是否需要创建一个单独的成熟 Django / Flask 应用来执行此操作?
- 我的工作应用程序如何与我的 Web 应用程序进行物理通信? cron.yaml 中的 POST 消息实际上是如何在 Web 应用程序上执行作业的?如果它是一个独立的应用程序,worker 和 web 环境实际上是如何关联的?
我本质上想安排一些 Django 管理命令。我也将方法公开为 POST 端点,但不知道如何让工作环境与网络应用程序对话/执行作业。
请原谅我的天真,我非常感谢任何关于如何将这个概念结合在一起的建议和指导。
【问题讨论】:
标签: python django amazon-web-services cron amazon-elastic-beanstalk