celery, postgresql -> 配置后端

8 投票
2 回答
18609 浏览
提问于 2025-04-17 14:22

我刚开始接触celery,想做一些简单的测试来熟悉它。
我想设置celery使用postgres作为我的后台数据库。
在这个页面上:
http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#keeping-results,我看到了一个例子。

celery = Celery('tasks', backend='redis://localhost', broker='amqp://')

所以在我的代码中,我尝试了

celery = Celery('tasks', 
               backend='sqla+postgresql://celery_exp:celery_exp@myhost/celery_exp',
                broker='sqla+postgresql://celery_exp:celery_exp@myhost/celery_exp',)

但是启动时总是出现这个错误:

ImportError: No module named sqla+postgresql

在文档中,我尝试了不同的变体,比如

postgresql://  
postgresql+psycopg2://  

我知道连接字符串是正确的,因为在Celery构造函数中去掉后台参数后,它按预期工作。
我在这里做错了什么呢?我觉得一定是些小问题,因为我在网上找不到任何相关的信息。

提前谢谢大家。

2 个回答

0

Celery会接收你给它的URL,然后查看这个URL的前缀(在这里是“sqla+postgresql”),接着寻找一个和这个前缀匹配的后端。实际上,没有一种“通用”的方式,只用数据库就能加载后端。你可以在你电脑上的celery文件夹里找到backend/init.py文件,查看里面的所有别名字典,然后你也可以添加自己的别名。

18

答案在这里 http://celery.readthedocs.org/en/latest/configuration.html#database-url-examples

你需要在你的普通 SQL Alchemy 地址前面加上 db+,比如说:

CELERY_RESULT_BACKEND = "db+postgresql+psycopg2://..."

撰写回答