celery, postgresql -> 配置后端
我刚开始接触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://..."