我无法配置 Celery 以使用 SQS。我按照此链接上的说明操作:http://docs.celeryproject.org/en/latest/getting-started/brokers/sqs.html
这是堆栈跟踪。
[2018-02-21 12:27:25,073:CRITICAL/MainProcess] 不可恢复的错误:ModuleNotFoundError(“没有名为‘sqs’的模块”,)12:27:25worker.1 |回溯(最近一次调用最后一次):12:27:25worker.1 |文件“/Users/logan/.virtualenvs/dolittle/lib/python3.6/site-packages/kombu/utils/objects.py”,第 42 行,位于 get 12:27:25worker.1 |返回 obj.dict[self.name] 12:27:25worker.1 |关键错误:“后端”
我使用的是Python 3.6。
依赖关系:
boto==2.46.1
celery==4.0.2
我错过了什么吗?
它也使用 SQS 作为结果后端。例如,您可以设置
CELERY_RESULT_BACKEND = None
。
您需要按照新文档安装
celery[sqs]
:
https://docs.celeryproject.org/en/stable/getting-started/backends-and-brokers/sqs.html
通过PIP安装时,如果您遇到以下问题:
FileNotFoundError:[Errno 2]没有这样的文件或目录:'curl-config'
安装 libcurl 开发包:
基于 Debian :
sudo apt install libcurl4-openssl-dev libssl-dev
Centos/Fedora:
dnf install libcurl-devel
回答@Anton 在@Sander van Leeuwen 帖子评论中提出的问题;
据我了解,SQS 不是一个保存和接收结果的系统。您应该考虑使用 Elasticache 解决方案。因此,结果后端应设置为
None
而不是 SQS 地址(除非您有某种类似 Elasticache 的解决方案来保存结果)。