python – 使用Celery与SQLAlchemy和Pyramid

前端之家收集整理的这篇文章主要介绍了python – 使用Celery与SQLAlchemy和Pyramid前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用Pyramid-1.2.1创建Web应用程序,sqlAlchemy作为数据库后端.
现在我需要和这个应用程序一起做一些周期性的任务,我想使用Celery作为任务处理器,sqlAlchemy作为消息队列和结果后端.

1)我已经安装了Celery-2.1.4,但我无法弄清楚如何使它工作.这是我的celeryconfig.py文件

  1. # List of modules to import when celery starts.
  2. CELERY_IMPORTS = ("my_app.tasks",)
  3. ## Result store settings.
  4. CELERY_RESULT_BACKEND = "database"
  5. CELERY_RESULT_DBURI = "sqlite:///MyDataBase.db"
  6. CELERY_RESULT_SERIALIZER = "json"
  7. ## Broker settings.
  8. BROKER_TRANSPORT = "sqlakombu.transport.Transport"
  9. BROKER_HOST = "sqlite:///MyDataBase.db"

my_app.tasks包含来自芹菜示例的简单添加任务.
现在我跑的时候

  1. $celeryd -l info

我看到以下内容

  1. [2011-11-11 20:22:50,750: WARNING/MainProcess] celery@OrangeMac.local v2.1.4 is starting.
  2. [2011-11-11 20:22:50,765: WARNING/MainProcess]
  3. Configuration ->
  4. . broker -> sqlakombu.transport.Transport://guest@sqlite:///MyDataBase.db/
  5. . queues ->
  6. . celery -> exchange:celery (direct) binding:celery
  7. . concurrency -> 4
  8. . loader -> celery.loaders.default.Loader
  9. . logfile -> [stderr]@INFO
  10. . events -> OFF
  11. . beat -> OFF
  12. . tasks ->
  13. . chatrooms.task.add
  14. [2011-11-11 20:22:50,787: INFO/PoolWorker-1] child process calling self.run()
  15. [2011-11-11 20:22:50,789: INFO/PoolWorker-2] child process calling self.run()
  16. [2011-11-11 20:22:50,791: INFO/PoolWorker-3] child process calling self.run()
  17. [2011-11-11 20:22:50,796: INFO/PoolWorker-4] child process calling self.run()
  18. [2011-11-11 20:22:50,802: WARNING/MainProcess] celery@OrangeMac.local has started.
  19. [2011-11-11 20:22:50,804: WARNING/MainProcess] Traceback (most recent call last):
  20. [2011-11-11 20:22:50,805: WARNING/MainProcess] File "/Users/shashkin/python_v_env/bin/celeryd",line 8,in

我错过了什么?

2)后来我想在我的应用程序中启动Celery.芹菜 – 挂架包安装后我该怎么办?我应该在应用程序的.ini文件中放置芹菜的设置吗?有人可以给我任何一个例子,因为我在网上找到的那些对我没什么帮助.

谢谢.

最佳答案
这看起来像芹菜包及其依赖项之间的版本兼容性问题.使用最新版本的芹菜,2.4.5你的例子就可以了.使用2.1.4我得到了同样的错误.

如果由于任何原因您只需要2.1.4版本的芹菜,您必须找出降级所需的依赖项以使其正常工作.通过查看回溯,很可能,它将是胡萝卜依赖,但如果其他依赖需要特定版本的胡萝卜,你可能会陷入依赖地狱.

我强烈建议使用带有pip的virtualenv,以便能够轻松地试验包的版本.尝试使用Linux存储库中的Python包开发一些东西可能会非常痛苦.

buildout versionspip requirements解决了这类问题,但AFAIK没有针对芹菜的固定依赖版本.

猜你在找的Python相关文章