Celery任务功能 - Web服务器与远程服务器

时间:2015-02-18 19:30:02

标签: python django celery worker

我愿意将任务从Web服务器(运行Django)发送到持有Rabbitmq服务器的远程计算机以及我用Celery实现的一些工作程序。

如果我按照Celery的方式去做,似乎我必须在两台机器之间共享代码,这意味着在Web应用程序代码中复制工人逻辑代码。

所以:

  • 有最好的做法吗?由于代码是多余的,我正在考虑使用git子模块(=>在Web应用程序代码库中复制,以及在工作者代码库中复制)
  • 我应该比Celery更好地使用别的东西吗?
  • 我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

管理此方法的一种方法是将您的工作人员存储在您的django项目中。 Django和芹菜彼此很好,允许您在芹菜应用程序中使用django项目的一部分。 http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html

部署这将意味着您的Web应用程序不会使用与您的芹菜工作者相关的模块,并且在您的芹菜机上您的django视图将永远不会被使用。这通常只导致几个未使用的django应用程序代码...

答案 1 :(得分:1)

您可以使用send_task。它采用与apply_async相同的参数,但您只需要提供任务名称。如果不在django中加载模块,您可以发送任务:

app.send_task('tasks.add', args=[2, 2], kwargs={})

http://celery.readthedocs.org/en/latest/reference/celery.html#celery.Celery.send_task