使用" How to configure celery-redis in django project on microsoft azure?"的优秀答案,我可以使用以下命令将Celery配置为使用非ssl端口,6379 来使用Azure Redis缓存Python代码:
from celery import Celery
# This one works
url = 'redis://:<access key>@<my server>.redis.cache.windows.net:6379/0'
# I want to use a url that specifies ssl like one of the following:
# url = 'redis://:<my key>=@<my server>.redis.cache.windows.net:6380/0'
# url = 'redis://:<my key>@<my server>.redis.cache.windows.net:6380/0?ssl=True'
app = Celery('tasks', broker=url)
@app.task
def add(x, y):
return x + y
但是,我想让芹菜使用ssl并使用ssl 在端口3380上与Azure Redis缓存进行通信。如果我将端口更改为6380,则在从socket&#34读取时会出现&#34;错误。在运行以下命令后等待几分钟后:
celery -A tasks worker --loglevel=INFO -Q "celery" -Ofair
有人知道如何在Celery或Azure端配置此功能,以便我可以使用 ssl 在Azure Redis缓存上的默认 3380 端口上进行芹菜通信?
我使用的是最新版本的Celery(4.0.2)
请注意,使用端口3380直接从 Linux客户端(在Azure上)和使用Python的redis库的ssl连接时,如下所示的代码没有问题:
import redis
redis.StrictRedis(host='<my host>.redis.cache.windows.net', port=6380, db=0, password='<my key>', ssl=True)
答案 0 :(得分:1)
对于代理,您应该能够设置broker_use_ssl配置选项。
对于后端,4.1.0版本中提供了选项redis_backend_use_ssl。
通过网址启用SSL的功能尚不可用:https://github.com/celery/celery/issues/2833
另请注意official support for Windows was dropped in 4.0。但是,您可以按照https://github.com/celery/celery/issues/4082
上的说明操作答案 1 :(得分:0)
已经可以使用 rediss://
代替 redis://
。
url = 'rediss://:<access key>@<my server>.redis.cache.windows.net:6380/0'