2016-07-23 8 views
1

Diese Konfiguration ist korrekt. Ich begann Sellerie der falsche Weg :(, ohne den Projektnamen angeben. (Sellerie Arbeiter -A hockey_manager -l infoDjango 1.9 + Sellerie nicht registrierte Aufgaben

ich Django 1.9 von 1.6.5 aktualisiert haben, und ich kann nicht machen die ... Sellerie Konfigurationsarbeiten wieder

nach fast zwei Tagen Suche nach einer Lösung ich nichts arbeiten fanden

Sellerie meine Aufgaben nicht erkennt ich habe versucht, mit:

  • CELERY_IMPORTS
  • autodiscover_tasks
  • bind = True

Abhängigkeiten

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

PROJECT STRUCTURE

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/Einstellungen/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' 

Hockey/Aufgaben .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): 
    ... 

Fehler von Sellerie

[2016.07.23 17: 05: 46.231: ERROR/MainProcess] Received unregistrierte Aufgabe des Typs 'hockey.tasks.league_schedule_results'. Die Nachricht wurde ignoriert und verworfen.

ich auch eine deprecation Warnung von AMQP erhalten ab Version 2.0:

AMQPDeprecationWarning: Das .Transport Attribut auf der Verbindung war zugegriffen, bevor die Verbindung hergestellt wurde. Dies wird für jetzt unterstützt, aber wird in amqp 2.2.0 veraltet sein.

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

    W_FORCE_CONNECT.format(attr=attr))) 

Antwort

4

Verwendung django-celery Modul.

hier ist link Beispiel, wie django-celery mit django verwenden 1.9.1+

+0

ich es bereits mit bin. Es ist in meiner Liste der Abhängigkeiten aufgeführt. Version 3.1.17 – Pietro

+0

Ich benutze es mit Django 1.9.1 und ich brauche nicht sellery.py Datei für die Konfiguration. Ich habe dir nur einen Vorschlag gegeben, die Schritte zu versuchen, die in Link erwähnt werden. Vielleicht folgen Sie diesen Schritten, werden Sie Sellerie korrekt mit Django 1.9.1 konfigurieren –

+0

Ich werde es versuchen und lassen Sie es wissen. Danke – Pietro