我愿意将任务从Web服务器(运行Django)发送到持有Rabbitmq服务器的远程计算机以及我用Celery实现的一些工作程序。
如果我按照Celery的方式去做,似乎我必须在两台机器之间共享代码,这意味着在Web应用程序代码中复制工人逻辑代码。
所以:
答案 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