Эта конфигурация исправна. Я начинал сельдерей неправильный путь :(без указания имени проекта. (Сельдерей рабочий -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
ПРОЕКТА СТРУКТУРА
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)))
Я уже использую его. Это показано в моем списке зависимостей. Версия 3.1.17 – Pietro
Я использую его с django 1.9.1, и мне не нужен файл celery.py для настройки. Я просто дал вам предложение попробовать шаги, упомянутые в ссылке. Возможно, следуя этим шагам, вы правильно настроите сельдерей с помощью django 1.9.1 –
Я попробую и дам вам знать. Спасибо – Pietro