Celery 配置 Redis 有密码

介绍

在分布式任务队列中,Celery 是一个广泛使用的 Python 库。它允许开发者将耗时的任务异步执行,以提高应用的响应速度和可伸缩性。而 Redis 是一个高性能的内存键值存储数据库,也是 Celery 默认使用的消息代理。

当我们使用 Celery 配置 Redis 时,有时需要设置 Redis 的密码来增加安全性。本文将介绍如何在 Celery 中配置 Redis 有密码,并提供代码示例。

配置 Redis 有密码

首先,我们需要在 Redis 中设置密码。可以通过在 Redis 的配置文件中设置 requirepass 参数来实现:

# 在 redis.conf 配置文件中添加以下行
requirepass your_password

然后,重启 Redis 服务以使密码生效。

接下来,我们需要在 Celery 的配置文件中设置 Redis 的密码。可以通过修改配置文件中的 broker_url 参数来实现:

# celeryconfig.py

broker_url = 'redis://:your_password@localhost:6379/0'

在上面的代码中,我们将 Redis 密码设置为 your_password,并将其添加到 broker_url 参数中。请确保将 localhost 替换为您的 Redis 服务器的主机名或 IP 地址,6379 为 Redis 服务器的端口号。

示例代码

下面是一个简单的 Celery 示例代码,演示了如何配置 Redis 有密码:

# tasks.py

from celery import Celery

app = Celery('tasks', broker='redis://:your_password@localhost:6379/0')

@app.task
def add(x, y):
    return x + y

在上面的代码中,我们创建了一个名为 tasks 的 Celery 应用,并将 Redis 的 broker_url 参数设置为带有密码的 URL。然后,我们定义了一个名为 add 的任务,用于计算两个数字的和。

运行示例代码

要运行上面的示例代码,需要按照以下步骤操作:

  1. 安装 Celery 和 Redis:
pip install celery redis
  1. 启动 Celery Worker:
celery -A tasks worker --loglevel=info
  1. 在另一个终端中运行以下代码来调用任务:
# main.py

from tasks import add

result = add.delay(4, 6)
print(result.get())

在上面的代码中,我们导入了之前定义的 add 任务,并使用 delay 方法异步调用该任务,并传递两个参数 4 和 6。然后,我们使用 get 方法获取任务的结果并打印出来。

运行 main.py,你将会在控制台上看到输出结果 10

总结

通过以上步骤,我们成功地配置了 Celery 使用 Redis 有密码。这样可以增加 Redis 的安全性,防止未经授权的访问。

Celery 提供了灵活而强大的分布式任务队列功能,可以用于各种异步任务的处理。通过将 Redis 作为消息代理,可以提供高性能和可伸缩性。

希望本文能够帮助您了解如何在 Celery 中配置 Redis 有密码,并提供了详细的代码示例。祝您使用 Celery 顺利!