2015-04-20 6 views
0

У меня есть очень простая задача, сельдерей, который работает (длинный бег) скрипт:Сельдерей + 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, поскольку сельдерей не может сохранить результат на локальном сервере redis.
Вы можете отключить результирующий сервер или запустить локальный сервер redis или установить его в OTHER_SERVER.

исх:

+0

Ты, человек, мой спаситель. :) –

Смежные вопросы