Celery + Redis失去联系

时间:2015-04-20 13:16:17

标签: python redis celery

我有一个非常简单的Celery任务,它运行一个(长时间运行的)shell脚本:

import os
from celery import Celery

os.environ['CELERY_TIMEZONE'] = 'Europe/Rome'
os.environ['TIMEZONE'] = 'Europe/Rome'

app = Celery('tasks', backend='redis', broker='redis://OTHER_SERVER:6379/0')

@app.task(name='ct.execute_script')
def execute_script(command):
    return os.system(command)

我在服务器MY_SERVER上运行此任务,然后从OTHER_SERVER启动它,同时运行Redis数据库。 该任务似乎成功运行(我看到在文件系统上执行脚本的结果),但我总是开始收到以下错误:

INTERNAL ERROR: ConnectionError('Error 111 connecting to localhost:6379. Connection refused.',)

它可能是什么?为什么在我将Redis服务器设置为localhost时它会尝试联系redis://OTHER_SERVER:6379/0并且它可以正常工作(因为任务已启动)?感谢

1 个答案:

答案 0 :(得分:2)

当您设置backend参数时,Celery会将其用作后端的结果。
在您的代码中,您告诉Celery使用本地redis服务器作为结果后端。

您看到ConnectionError,因为芹菜无法将reult保存到本地redis服务器 您可以禁用结果后端或启动本地redis服务器或将其设置为OTHER_SERVER。

参考: