我开始在我的Django项目中使用Celery,并且忍不住想知道:哪一种方式可以开始启动Celery的项目工作人员?哪个是在Django项目中启动芹菜最优雅的方法?
让我解释一下这个问题的推理。
目前,启动芹菜的推荐方式似乎是更简单的设置中的python manage.py celeryd
,以及更复杂的设置中的/etc/init.d/celeryd start
。然而,在第一种情况下,这个过程感觉很脆弱,因为过程不会自动启动,而第二个过程需要相当多的项目特定配置(virtualenv
,settings
等)。特别是后者表明我一般的感觉是芹菜工人与它所涉及的代码库密切相关,而且它与主项目过程也紧密相连,因为没有任何东西来实际创建任务的Celery工人实际上是无用的(有一个例外是celerybeat
)。 init.d
脚本的另一个问题是,他们需要一些先进的逻辑来处理每个服务器的多个项目(具有独立的虚拟环境,设置,路径等)。
所以我想,启动配置可能是相当优雅的celeryd
连同我的主要过程,例如从Apache mod_wsgi
中产生它(类似于其他设置选项),从而在主进程停止时(/etc/init.d/apache2 stop
)终止它。然而,我不太清楚在这个推理中是否存在考虑性能和/或安全性的技术陷阱 - 可能是这种情况,因为我尝试了使用Google搜索并没有发现任何东西。
- 考虑到芹菜架构,我的推理是否有缺陷?
- 我能以某种方式在
mod_wsgi
以内的某处产生celeryd
,这是否合理? - 您如何在您的项目中启动芹菜工人?
查看[supervisor](http://supervisord.org/)管理进程。在我的服务器上,我管理'nginx','gunicorn/uwsgi','postgres'和许多使用它的django项目。这可能是启动和停止芹菜的好方法 – 2012-03-10 17:16:39