如何设置 Celery 以将 SSL 与 Azure Redis 实例进行通信



使用"如何在Microsoft Azure上的django项目中配置芹菜-redis?"的伟大答案,我可以使用以下Python代码将Celery配置为使用非SSL端口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 并使用 SSL在端口 3380上与 Azure Redis 缓存进行通信。 如果我将端口更改为 6380,则在运行以下命令后等待几分钟后出现"从套接字读取时出错":

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

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

我使用的是最新版本的芹菜 (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)

已经可以使用rediss://代替redis://.

url = 'rediss://:<access key>@<my server>.redis.cache.windows.net:6380/0'

对于代理,您应该能够设置broker_use_ssl配置选项。

对于后端,选项 redis_backend_use_ssl 在 4.1.0 版本中可用。

通过 URL 启用 SSL 的功能尚不可用:https://github.com/celery/celery/issues/2833

另外,请注意,对Windows的官方支持在4.0中被删除。但是,您可以按照 https://github.com/celery/celery/issues/4082 中的说明使其工作

相关内容

  • 没有找到相关文章

最新更新