gpt4 book ai didi

python - 使用工作层在 Elastic Beanstalk 上使用 Django 设置计划/cron 作业

转载 作者:太空狗 更新时间:2023-10-29 21:06:55 25 4
gpt4 key购买 nike

我目前正在将一个 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 和 worker dynos、异步处理、Redis 和 Celery 以及计划作业,但我无法弄清楚如何将其转化为 Elastic Beanstalk 世界。

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

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

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

请原谅我的天真,如果能就这个概念如何组合在一起提供任何建议和指导,我将不胜感激。

最佳答案

所以我最终与一位更熟悉 AWS 服务的 friend 交谈。他解释了这些概念,我通过如下设置工作环境来运行计划的作业:

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

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

关于python - 使用工作层在 Elastic Beanstalk 上使用 Django 设置计划/cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36008732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com