Python celery 通过 ssl 连接

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

我一直在尝试通过 celery 5.0.5 连接到 RabbitMQ(如果重要的话,它是从 AWS Messaging Service 创建的)实例。连接链接开始如下

amqps://user:password@..../
。运行 python 脚本时收到以下错误:

consumer: Cannot connect to amqps://sessionstackadmin:**@b-0482d011-0cca-40bd-968e-c19d6c85e2a9.mq.eu-central-1.amazonaws.com:5671//: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

我正在使用

python 3.6.12
从 docker 容器运行脚本。 docker 容器可以访问端点(至少可以远程登录到它)。我感觉 python 进程不尊重发行版证书链,它只是无法验证证书。

python python-3.x ssl rabbitmq celery
3个回答
4
投票

我解决了! Celery 使用的是 Kombu,Kombu 使用的是 py-amqp,并且碰巧 1 月 19 日的最新版本 5.0.3 已损坏。

我的 GH 票

https://github.com/celery/py-amqp/issues/349

解决方案:将

amqp==5.0.2

 添加为项目需求中的硬依赖项。

修复于:

git+git://github.com/celery/py-amqp.git@0b8a832d32179d33152d886acd6f081f25ea4bf2


    


0
投票
我将留下“修复”此问题的解决方法。由于某种原因,

kombu

库在尝试处理 ssl 连接时不尊重您的发行版附带的默认 CA 证书。这基本上是由 
https://docs.python.org/3/library/ssl.html#ssl.create_default_context 处理的,该库不使用该库。遗憾的是,它不允许传递自定义的 SSLContext
,而只允许传递一组稍后传递到上下文的选项。其中一个选项是
broker_use_ssl。通过将其设置为 {'ca_certs': '/etc/ssl/certs/ca-certificates.crt'}
 ,它将尊重发行版中的 CA 证书(请记住,我使用的是基于 ubuntu/debian 的映像,并且 CA 证书配置文件驻留在此处,如果您使用的是其他发行版,请检查正确的位置用于您的 CA 证书)。


0
投票
有人知道当 celery 尝试连接到启用 ssl 的文档数据库时出现以下错误吗?

Field 'size' is currently not supported, full error: {'ok': 0.0, 'code': 303, 'errmsg': "Field 'size' is currently not supported", 'operationTime': Timestamp(1702028758, 1)}


    

© www.soinside.com 2019 - 2024. All rights reserved.