Django Celery Redis

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

我有这个错误

A rediss:// URL must have parameter ssl_cert_reqs and this must be set to CERT_REQUIRED, CERT_OPTIONAL, or CERT_NONE

设置

CELERY_BROKER_URL = os.environ.get('REDIS_URL', "redis://localhost:6379")
CELERY_RESULT_BACKEND = os.environ.get('REDIS_URL', "redis://localhost:6379")
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

芹菜.py

from __future__ import absolute_import, unicode_literals
from celery import Celery
import os, ssl

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproj.settings')

app = Celery(
'myproj',
broker_use_ssl = {
    'ssl_cert_reqs': ssl.CERT_NONE
})

app.config_from_object('django.conf:settings', namespace="CELERY")

app.autodiscover_tasks()

我将 ssl_cert_reqs 的值更改为不同的值“none”,“cert_required”,...,但是什么都没有,当我使用 rediss:// 而不是 redis:// 时总是出现相同的错误。

django heroku redis django-celery
2个回答
13
投票

我从未使用过选项

broker_use_ssl
,您可以尝试删除此选项并重试吗

app = Celery('myproj')

或 更新

 Celery('myproj',
     broker_use_ssl = {
        'ssl_cert_reqs': ssl.CERT_NONE
     },
     redis_backend_use_ssl = {
        'ssl_cert_reqs': ssl.CERT_NONE
     }
)

0
投票

添加对我有用的更快解决方案 - 我更新了我的

REDIS_URL
值并附加了
?ssl_cert_reqs=CERT_NONE
CERT_NONE
可以替换为
CERT_OPTIONAL
CERT_NONE
,具体取决于 SSL 证书的可用性

如果

REDIS_URL
是您应用程序中的环境值,那么您可能不需要更改代码;只需编辑服务器或
.env
文件中的变量值(视情况而定)

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