本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前置条件:
1.redis需要ssl连接,但是没有ssl证书。
2.celery版本在3.x以上
3.服务器环境为linux,arm系统
from celery import Celery
from flask import Flask
import ssl
app = Flask(__name__)
REDIS_PWD = ""
REDIS_HOST = ""
REDIS_PORT = ""
celery = Celery(app.import_name,
broker=f'rediss://:{REDIS_PWD}@{REDIS_HOST}:{REDIS_PORT}/1',
backend=f'rediss://:{REDIS_PWD}@{REDIS_HOST}:{REDIS_PORT}/2',
accept_content=['pickle', ],
timezone="Asia/Shanghai",
broker_use_ssl={
'ssl_cert_reqs': ssl.CERT_NONE
},
redis_backend_use_ssl={
'ssl_cert_reqs': ssl.CERT_NONE
}
)
我用的场景是无证书的,所以ssl_cert_reqs的值为ssl.CERT_NONE
如果有证书就需要设置额外值
参考网址:
import ssl
broker_use_ssl = {
'keyfile': '/var/ssl/private/worker-key.pem',
'certfile': '/var/ssl/amqp-server-cert.pem',
'ca_certs': '/var/ssl/myca.pem',
'cert_reqs': ssl.CERT_REQUIRED
}
核心还是要设置redis_backend_use_ssl这个值
redis的连接方式也是需要加个s,即:rediss
CELERY_BROKER_URL = f'rediss://:{REDIS_PWD}@{REDIS_HOST}:{REDIS_PORT}/1'
CELERY_RESULT_BACKEND = f'rediss://:{REDIS_PWD}@{REDIS_HOST}:{REDIS_PORT}/2'