Home Articles

如何设置Celery将ssl与Azure Redis实例通信

Asked
Viewed 58 times
1

使用“How to configure celery-redis in django project on microsoft azure?”的出色答案,我可以使用以下Python代码将Celery配置为使用 non-ssl port, 6379 使用Azure Redis缓存:

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并在 port 3380 using ssl 上与Azure Redis缓存进行通信 . 如果我将端口更改为6380,则在运行以下命令后等待几分钟后会得到"Error while reading from socket":

celery -A tasks worker --loglevel=INFO -Q "celery" -Ofair

有没有人知道如何在Celery或Azure端配置它,以便我可以使用 ssl 在Azure Redis缓存上的默认 3380 端口上进行芹菜通信?

我使用的是最新版本的Celery(4.0.2)

请注意,使用端口3380直接从 Linux client (在Azure上)和使用Python的redis库的ssl连接时,如下所示的代码没有问题:

import redis
redis.StrictRedis(host='<my host>.redis.cache.windows.net', port=6380, db=0, password='<my key>', ssl=True)

1 Answer

Related