Сельдерей пытается связаться с неправильным брокером

У меня есть проект Django на узле Ubuntu EC2, который я использовал для настройки асинхронного использования Celery.

Я смог выполнить базовую задачу, работая в командной строке, используя:

(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ celery --app=myproject.celery:app worker --loglevel=INFO

Однако, если я запускаю другие команды сельдерея, как показано ниже, я получаю следующее:

(env1) ubuntu @ ip-172-31-22-65: ~ / projects / tp $ работник сельдерея

Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused.

Похоже, что сельдерей считает, что я использую amqp как брокер, но я использую Redis! Я пытался следовать http://michal.karzynski.pl/blog/2014/05/18/setting-up-an-asynchronous-task-queue-for-django-using-celery-redis/

Установленные пакеты Python:

(env1)ubuntu@ip-172-31-22-65:~/projects/tp$ pip freeze
amqp==1.4.6
anyjson==0.3.3
billiard==3.3.0.19
celery==3.1.17
Django==1.7.7
django-redis-cache==0.13.0
kombu==3.0.24
pytz==2015.2
redis==2.10.3
requests==2.6.0
uWSGI==2.0.10

/projects/tp/tp/celery.py

from __future__ import absolute_import

import os
import django
from celery import Celery
from django.conf import settings

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tp.settings')
django.setup()

app = Celery('hello_django')

# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

также в redis.conf:

# Specify the path for the unix socket that will be used to listen for
# incoming connections. There is no default, so Redis will not listen
# on a unix socket when not specified.
#
  unixsocket /var/run/redis/redis.sock
  unixsocketperm 777

tp.settings.py:

# CELERY SETTINGS
BROKER_URL = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

CACHES = {
    'default': {
        'BACKEND': 'redis_cache.RedisCache',
        'LOCATION': '/var/run/redis/redis.sock',
    },
}

Как мне использовать Redis в качестве брокера?

2
задан 1 April 2015 в 19:58

1 ответ

Необходимо добавить -A опция, когда выполняют "рабочего сельдерея" так, чтобы сельдерей соединился с брокером, которого Вы настроили в Вашем. Иначе сельдерей попытается соединить брокера по умолчанию.

1
ответ дан 2 April 2015 в 05:58

Другие вопросы по тегам:

Похожие вопросы: