Celery + SQS - pycurl 错误

问题描述 投票:0回答:6

今天我一直在尝试使用 AWS SQS 作为代理来设置 Celery,但是在执行以下操作时:

测试.py

from celery import Celery

access_key_id = '********************'
secret_access_key = '****************************************'

broker_url = 'sqs://%s:%s@' %(access_key_id, secret_access_key)

app = Celery('test', backend=None, broker=broker_url)

@app.task
def add(x, y):
    return x + y

尝试使用命令运行 Celery Worker

celery -A test worker --loglevel=info

这样我得到以下错误:

Unrecoverable error: ImportError('The curl client requires the pycurl library.',)

我安装了以下软件包:

amqp (2.2.2)
billiard (3.5.0.3)
boto (2.48.0)
boto3 (1.4.7)
botocore (1.7.48)
celery (4.1.0)
docutils (0.14)
jmespath (0.9.3)
kombu (4.1.0)
pip (9.0.1)
pycurl (7.43.0)
python-dateutil (2.6.1)
pytz (2017.3)
s3transfer (0.1.11)
schedule (0.5.0)
setuptools (37.0.0)
six (1.11.0)
vine (1.1.4)
wheel (0.30.0)

有人能看到我做错了什么吗?预先感谢!

python python-3.x celery amazon-sqs
6个回答
5
投票

看起来这可能是您所拥有的 Celery (4.1.0) 版本的问题。如果我在降级到版本 3.1.25 后执行相同的代码,它可以正常工作。


4
投票

我遇到了同样的错误,这些步骤对我有用:

麦克:

brew upgrade openssl

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"   

export PYCURL_SSL_LIBRARY=openssl

python -m pip install celery[sqs]

centos:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
pip install --compile pycurl

3
投票

如果您使用的是Mac,则需要编译并安装PycURL。如果尚未安装,您可能还需要安装

openssl

brew install openssl
    
export PYCURL_SSL_LIBRARY=openssl 
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include" 
pip install --no-cache-dir pycurl

linux安装方式类似

openssl
:

apt-get update -y && apt-get install -y libcurl4-openssl-dev libssl-dev gcc

检查PycURL SSL 文档以获取更多安装信息。


0
投票

这适用于 Debian

sudo apt install libcurl4-openssl-dev libssl-dev
pip uninstall pycurl
pip install pycurl --compile --global-option="--with-openssl" --no-cache-dir

0
投票

如果您不使用pip install celery[sqs]它将起作用。 使用 pip install celery 然后一一安装其他库。


0
投票

只是为了添加 BlaShadow 的答案(没有代表发表评论),如果 PyCurl 已经安装,您需要卸载它并将其从缓存中删除:

pip uninstall pycurl
pip cache remove pycurl

此外,如果您没有 root 访问权限,您的 openssl 安装可能会在其他地方。我的主目录中有我的,所以它看起来像这样

export LDFLAGS=-L/Users/$YOUR_NAME/brew/Cellar/openssl@3/3.2.1/lib;export CPPFLAGS=-I/Users/$YOUR_NAME/brew/Cellar/openssl@3/3.2.1/include
© www.soinside.com 2019 - 2024. All rights reserved.