我有这个错误
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'
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:// 时总是出现相同的错误。
我从未使用过选项
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
}
)
添加对我有用的更快解决方案 - 我更新了我的
REDIS_URL
值并附加了 ?ssl_cert_reqs=CERT_NONE
。 CERT_NONE
可以替换为 CERT_OPTIONAL
或 CERT_NONE
,具体取决于 SSL 证书的可用性
如果
REDIS_URL
是您应用程序中的环境值,那么您可能不需要更改代码;只需编辑服务器或 .env
文件中的变量值(视情况而定)