4

我有一个基于 pylons 的 webapp,我很想使用 celery + rabbitmq 来完成一些任务。我已经查看了 celery-pylons 项目,但我没有成功使用它。

我对 celery 的主要问题是:我将 celeryconfig.py 文件放在哪里,或者是否有任何其他方式来指定 celery 选项,例如。BROKER_HOST 等,来自 pylons 应用程序(使用 django-celery 时,可以将选项放在 django settings.py 文件中)。

基本上,我研究了 2 个选项:使用 celery 作为独立项目和使用 celery-pylons,两者都没有取得多大成功.. :(

在此先感谢您的帮助。

4

2 回答 2

3

我目前正在这样做,尽管我已经有一段时间没有更新 celery 了。我认为我仍在使用 2.0.0。

我所做的是在我的 pylons 应用程序中创建一个 celery_app 目录。(所以与数据、控制器等在同一目录中)

在那个目录中是我的 celeryconfig.py、tasks.py 和 pylons_tasks.py。

pylons_tasks.py 只是一个初始化 pylons 应用程序的文件,因此我可以将 Pylons 模型等加载到 celery tasks.py 文件中。所以它会执行 pylons 初始化,然后导入 tasks.py。

然后将 celeryconfig 设置为使用 myapp.celery_app.pylons_tasks 作为 CELERY_IMPORTS 值。

CELERY_IMPORTS = ("myapp.celery_app.pylons_tasks", )

希望对一些人有所帮助。

于 2010-10-21T16:27:51.437 回答
1

与 pylons 最紧密的集成是将自定义加载器构建到粘贴命令中。这就是 celery-pylons 所做的。查看我的 celery-pylons 叉子https://bitbucket.org/dougtabuchi/celery-pylons/src,它应该适用于最新的 celery 和 pylons 1.0。

要让 celeryd 工作,你需要在你的 ini 文件中添加正确的选项,然后调用 Paster celeryd development.ini

对于 webapp 端,您只需要在 environment.py 中导入 celerypylons,然后您就可以从项目中的任何位置导入和使用您的任务。

一个使用 celery 的好的 pylons 项目是https://rhodecode.org/rhodecode/files/tip/

于 2011-04-30T13:40:56.230 回答