2016-08-04 19 views
1

ich eine Dummy-Aufgabe in Sellerie Setup versuchen, die alle 3 Sekunden laufen, aber bisher wenig Erfolg gehabt. Dies ist die Ausgabe erhalte ich:Aufgaben in CELERYBEAT_SCHEDULE nicht verarbeitet werden

enter image description here

ich eingerichtet haben Sellerie wie folgt:

In settings.py:

from datetime import timedelta 

BROKER_URL = 'redis://localhost:6379/0' 
CELERY_RESULT_BACKEND = 'redis://localhost:6379' 
CELERY_ACCEPT_CONTENT = ['application/json'] 
CELERY_TASK_SERIALIZER = 'json' 
CELERY_RESULT_SERIALIZER = 'json' 
CELERY_TIMEZONE = 'UTC' 
CELERY_IMPORTS = ("api.tasks") 
CELERYBEAT_SCHEDULE = { 
    'add_job': { 
     'task': 'add_job', 
     'schedule': timedelta(seconds=3), 
     'args': (16, 16) 
    }, 
} 
CELERY_TIMEZONE = 'UTC' 

In celery.py :

from __future__ import absolute_import 
import os 
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', 'blogpodapi.settings') 
app = Celery(
    'blogpodapi', 
) 

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


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

In

from celery.task import task 

@task(name='add_job') 
def add_job(x, y): 
    r = x + y 
    print "task arguments: {x}, {y}".format(x=x, y=y) 
    print "task result: {r}".format(r=r) 
    return r 

Habe ich etwas falsch in der Art und Weise getan, die ich gesetzt habe es auf?

+0

Ich glaube nicht, dass Sie einen Fehler bekommen. Du hast gerade eine Warnung erhalten. Und Ihr Sellerie funktioniert einfach perfekt ohne Fehler, wie die letzte Zeile sagt, dass Sellerie fertig ist .. !! –

+0

Ok danke, aber warum läuft die Aufgabe nicht? Das verwirrt mich – methuselah

Antwort

2

Okay, das sehr einfach Fehler, den ich sehe, ist, dass die meisten der Einstellungen, die Sie in Ihrem settings.py in celery.py

gehen müssen erwähnt haben, um speziell die CELERYBEAT_SCHEDULE

Sie tun alles schreiben, es ist nur, dass Ihr Sellerie wartet auf eine Aufgabe, die sie nie erhält, wie sie von sellery.py liest und nicht von der settings.py. Daher passiert nichts.

Siehe meine celery.py und auch die settings.py für eine Referenz.

celery.py ->https://github.com/amyth/hammer/blob/master/config/celery.py

settings.py ->https://github.com/amyth/hammer/blob/master/config/settings.py

ich verwendet habe crontab, Coz ich die Aufgabe zu einem bestimmten Zeitpunkt des Tages ausführen wollte. Sie brauchen sich also keine Sorgen zu machen. Dein ist perfekt für das, was du machen willst.

auch von wo auch immer, was auch immer Blog oder Tutorial Sellerie folgen, erneut überprüfen, was genau die erforderlichen Einstellungen für das sind, und ob Sie alle, alle von ihnen benötigen oder nicht.