可以在芹菜中使用不同的消息代理吗?
例如:我想使用PostgreSQL而不是RabbitMQ .
AFAIK只在结果后端支持:http://docs.celeryproject.org/en/latest/userguide/configuration.html#database-backend-settings
从PostgreSQL 9.5开始,有 SKIP LOCKED
可以实现强大的消息/工作队列 . 见https://blog.2ndquadrant.com/what-is-select-skip-locked-for-in-postgresql-9-5/
2 回答
是的,你可以使用postgres作为经纪人而不是rabbitmq . 这是一个演示它的简单示例 .
排队任务
Worker 结果:
测试了最新版本(celery == 4.1.0,kombu == 4.1.0,SQLAlchemy == 1.1.1) .
在版本4之前,确定是的!在official document之后,我曾经在Celery 3中使用mongodb作为消息代理 .
所以如果想使用PostgreSQL作为代理,没关系,Celery也支持SQLAlchemy .
但是,如果你想在Celery 4.0中使用它,也许它有点困难,我想到的一种方法是改变Kombu的代码,是的,它是Kombu,而不是Celery!