2016-07-23 5 views
1

Эта конфигурация исправна. Я начинал сельдерей неправильный путь :(без указания имени проекта. (Сельдерей рабочий -A hockey_manager -l ИнформацияDjango 1.9 + Сельдерей незарегистрированные задачи

я обновить Django 1.9 из 1.6.5, и я не могу сделать ... сельдерей конфигурации работы снова

После почти двух дней поисков решения я не нашел ничего работать

сельдерея не обнаруживает свои задачи, я попытался с:

  • CELERY_IMPORTS
  • autodiscover_tasks
  • связывают = True

Зависимости

amqp==2.0.3 
celery==3.1.23 
Django==1.9.8 
django-celery==3.1.17 
kombu==3.0.35 

ПРОЕКТА СТРУКТУРА

enter image description here

hockey_manager/__ init__.py

from __future__ import absolute_import 

# This will make sure the app is always imported when 
# Django starts so that shared_task will use this app. 
from .celery import app as celery_app 

hockey_manager/celery.py

from __future__ import absolute_import 

import os 

from celery import Celery 

# set the default Django settings module for the 'celery' program. 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'hockey_manager.settings.common') 

app = Celery('hockey_manager') 

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

# load task modules from all registered Django app configs. 
app.autodiscover_tasks(['hockey']) 

# 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) 

# Celery backend configs 
app.conf.update(
    CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend', 
) 

if __name__ == '__main__': 
    app.start() 


@app.task(bind=True) 
def debug_task(self): 
    print('Request: {0!r}'.format(self.request)) 

hockey_manager/Настройки/common.py

INSTALLED_APPS = [ 
    ... 
    'hockey', 
    'djcelery', 
    'kombu.transport.django', 
    ... 
] 

## 
# Celery 
## 
# BROKER_POOL_LIMIT = 3 
BROKER_URL = os.environ.get('CLOUDAMQP_URL') 
#BROKER_URL = 'django://' 

# List of modules to import when celery starts. 
CELERY_IMPORTS = ('hockey.tasks',) 

#: Only add pickle to this list if your broker is secured 
#: from unwanted access (see userguide/security.html) 

CELERY_ACCEPT_CONTENT = ['json'] 
CELERY_TASK_SERIALIZER = 'json' 
CELERY_RESULT_SERIALIZER = 'json' 

хоккейные/задачи .py

from __future__ import absolute_import 
from hockey_manager.celery import app 

@app.task(name='hockey.tasks.league_schedule_results') 
def league_schedule_results(schedule, statistics): 
    ... 

Ошибка из сельдерея

[2016-07-23 17: 05: 46231: ОШИБКА/MainProcess] Полученное незарегистрированной задача '' hockey.tasks.league_schedule_results типа. Сообщение было проигнорировано и отброшено.

Я также получил предупреждение устаревания от AMQP начиная с версии 2.0:

AMQPDeprecationWarning: Атрибут .Транспортировки на связи был доступа, прежде чем было установлено соединение. Это поддерживается сейчас, но будет устаревшим в amqp 2.2.0.

Since amqp 2.0 you have to explicitly call Connection.connect() 
before using the connection. 

    W_FORCE_CONNECT.format(attr=attr))) 

ответ

4

использование django-celery модуль.

здесь link к примеру, как использовать django-celery с Джанго 1.9.1+

+0

Я уже использую его. Это показано в моем списке зависимостей. Версия 3.1.17 – Pietro

+0

Я использую его с django 1.9.1, и мне не нужен файл celery.py для настройки. Я просто дал вам предложение попробовать шаги, упомянутые в ссылке. Возможно, следуя этим шагам, вы правильно настроите сельдерей с помощью django 1.9.1 –

+0

Я попробую и дам вам знать. Спасибо – Pietro

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