我们升级了 Celery 并开始收到警告:
CPendingDeprecationWarning:broker_connection_retry 配置 设置将不再确定代理连接重试是否 在 Celery 6.0 及以上版本启动时制作。如果您想保留 启动时重试连接的现有行为,您应该设置 将broker_connection_retry_on_startup设置为True。
我们使用 Redis 作为代理。我尝试理解什么意思:“在启动期间进行代理连接重试” - 我们需要这个吗?我们不需要这个吗?这是什么?为什么我们应该使用它?
除了 @DejanLekic 的出色响应之外,您还可以通过将以下代码放入
celery.py
中,利用以下设置来消除警告。
celery_app.conf.broker_connection_retry_on_startup = True
或者使用 django 设置文件
CELERY_BROKER_CONNECTION_RETRY_ON_STARTUP = True
这是针对 Celery 6 中将出现的更改的弃用警告。显然,他们决定引入一个新的布尔配置参数
broker_connection_retry_on_startup
,可用于告诉 Celery 是否应该在启动期间重试建立连接。如您所知,当您启动 Celery Worker 时,它几乎会立即尝试与 Broker 进行通信。如果代理未运行或网络存在问题,工作人员将继续重试与代理建立通信(在您的情况下为 Redis)。
这是 Celery 版本
<6.0
的当前逻辑,在启动时重试连接,如果您想保留该逻辑,请通过将参数添加到 Celery 的配置中来明确执行。
单个文件中的 Celery 示例 tasks.py
from celery import Celery
app = Celery(
'tasks',
broker='redis://127.0.0.1:6379',
broker_connection_retry_on_startup=True, # here it is!!!
)
@app.task
def add(x, y):
return x + y