【问题标题】:Celery with Django - deploymentCelery 与 Django - 部署
【发布时间】:2011-06-15 14:10:29
【问题描述】:

我正在考虑在我的项目中使用 celery。我发现了很多关于如何使用它等的信息。我感兴趣的是如何部署/打包我的解决方案。

我需要运行两个组件 - django app 和 celeryd worker(发送电子邮件的组件)。例如,我希望我的 django 应用程序使用 email_ticket 任务,该任务将通过电子邮件发送支持票。我在 django 应用程序中创建 tasks.py。

@task
def email_ticket(from, message):
...

我是否部署了我的 django 应用程序,然后将 celeryd 作为单独的进程从同一路径运行?

./manage.py celeryd ...

不同服务器上的工作人员呢?部署整个 django 应用程序并只运行 celeryd?我知道我只能为工人使用 celery,但我想使用 celerycam 和 celerybeat。

感谢任何反馈。谢谢

感谢您的任何反馈。

【问题讨论】:

  • 好问题。公认的答案(“部署一切”)当然是简单而强大的——但不是最优的。也许有人可以想出一个好方法,只将所需的代码分发给“工人”机器,同时又不会使整个过程过于复杂。

标签: python django celery


【解决方案1】:

这在文档here 中有介绍。要点是您需要下载一些初始化脚本并设置一些配置。完成后,celeryd 将在启动时启动,您将关闭并运行。

【讨论】:

  • 我知道这个链接。我更感兴趣的是项目结构。如何构建我的 Django 应用程序和工作代码?我应该创建另一个只包含所需 django 应用程序的发行版吗?例如,我不需要用于工作人员分发的模板和媒体。不过我需要模型。
  • 我认为这取决于你在哪里部署它。对于我正在处理的东西,它们都部署到一个网站上,所以我只是将任务放在应用程序中(我的项目被分解成细粒度的应用程序)。然后我只是将整个事情部署到工作节点。这很简单,我不担心会破坏某些东西,因为我忘记将它包含在工作节点发行版中。
  • 我想这就是这样做的方法。我将为每个工作节点重新部署我的 Django 应用程序,然后运行工作程序。谢谢,感谢您的意见。
  • 显然首选启动脚本,毫无疑问。这个答案是否表明仅运行 ./manage.py celeryd 存在技术缺陷?
猜你喜欢
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
  • 2013-09-18
  • 2021-06-21
  • 2018-07-09
  • 2018-07-15
  • 2016-03-04
  • 2017-10-24
相关资源
最近更新 更多