我有一个基于pylons的webapp,我喜欢使用芹菜+ rabbitmq一段时间来完成任务。我看了一下celery-pylons项目,但我还没有成功使用它。
我对celery的主要问题是:我在哪里放置celeryconfig.py文件或者是否有其他方法来指定芹菜选项,例如。 BROKER_HOST等,来自pylons应用程序(同样,当使用django-celery时,可以将选项放在django settings.py文件中)。
基本上,我调查了两个选项:使用芹菜作为独立项目并使用芹菜 - 挂架,两者都没有太大成功.. :(
提前感谢您的帮助。
答案 0 :(得分:3)
我目前正在这样做,虽然我在一段时间内没有更新芹菜。我认为我仍然在2.0.0。
我所做的是在我的pylons应用程序中创建一个celery_app目录。 (所以在与数据,控制器等相同的目录中)
在该目录中是我的celeryconfig.py,tasks.py和pylons_tasks.py。
pylons_tasks.py只是一个初始化pylons应用程序的文件,因此我可以将Pylons模型等加载到celery tasks.py文件中。所以它做了pylons init然后导入tasks.py。
然后将celeryconfig设置为使用myapp.celery_app.pylons_tasks作为CELERY_IMPORTS值。
CELERY_IMPORTS = ("myapp.celery_app.pylons_tasks", )
希望有所帮助。
答案 1 :(得分:1)
与pylons的最紧密集成是将自定义加载器构建为粘贴命令。这就是芹菜 - 挂架的作用。看看我的芹菜叉子https://bitbucket.org/dougtabuchi/celery-pylons/src,它应该与最新的芹菜和挂架1.0配合使用。
要让celeryd方面正常工作,您需要在ini文件中添加正确的选项,然后调用paster celeryd development.ini
对于webapp方面,您只需要在environment.py中导入celerypylons然后您就可以从项目的任何位置导入和使用您的任务。
使用芹菜的好挂架计划是https://rhodecode.org/rhodecode/files/tip/