2015-04-20 61 views
0

我有一个非常简单的芹菜任务运行的(长期运行)的shell脚本:芹菜+ Redis的失去连接

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.',) 

什么可能呢?为什么它试图联系localhost,而我已经将Redis服务器设置为redis://OTHER_SERVER:6379/0并且它可以工作(自任务启动后)?谢谢

+0

试试这个:http://stackoverflow.com/a/13928537/180960 – aliva

+0

嗨,它已经被设置为0.0.0.0,还是行不通。 – pistacchio

回答

2

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

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

裁判:

+0

你是男人,是我的救世主。 :) –