2015-07-14 6 views
12

Quando si esegue celery -A tasks2.celery worker -B, desidero visualizzare "attività di sedici" stampata ogni secondo. Attualmente non viene stampato nulla. Perché non funziona?L'istruzione di stampa nell'attività pianificata di Celery non viene visualizzata nel terminale

from app import app 
from celery import Celery 
from datetime import timedelta 

celery = Celery(app.name, broker='amqp://guest:@localhost/', backend='amqp://guest:@localhost/') 
celery.conf.update(CELERY_TASK_RESULT_EXPIRES=3600,) 

@celery.task 
def add(x, y): 
    print "celery task" 
    return x + y 

CELERYBEAT_SCHEDULE = { 
    'add-every-30-seconds': { 
     'task': 'tasks2.add', 
     'schedule': timedelta(seconds=1), 
     'args': (16, 16) 
    }, 
} 

Questa è l'unica uscita dopo a fissare il lavoratore e battere:

[tasks] 
    . tasks2.add 

[INFO/Beat] beat: Starting... 
[INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672// 
[INFO/MainProcess] mingle: searching for neighbors 
[INFO/MainProcess] mingle: all alone 

risposta

11

Hai scritto la pianificazione, ma non l'hai aggiunta alla configurazione di sedano. Quindi beat non vide compiti programmati da inviare. L'esempio seguente utilizza celery.config_from_object(__name__) per prelevare i valori di configurazione dal modulo corrente, ma è possibile utilizzare anche qualsiasi altro metodo di configurazione.

Una volta configurato correttamente, verranno visualizzati messaggi di beat sull'invio di attività pianificate, nonché l'output di tali attività come il lavoratore riceve e le esegue.

from celery import Celery 
from datetime import timedelta 

celery = Celery(__name__) 
celery.config_from_object(__name__) 

@celery.task 
def say_hello(): 
    print('Hello, World!') 

CELERYBEAT_SCHEDULE = { 
    'every-second': { 
     'task': 'example.say_hello', 
     'schedule': timedelta(seconds=5), 
    }, 
} 
$ celery -A example.celery worker -B -l info 

[tasks] 
    . example.say_hello 

[2015-07-15 08:23:54,350: INFO/Beat] beat: Starting... 
[2015-07-15 08:23:54,366: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672// 
[2015-07-15 08:23:54,377: INFO/MainProcess] mingle: searching for neighbors 
[2015-07-15 08:23:55,385: INFO/MainProcess] mingle: all alone 
[2015-07-15 08:23:55,411: WARNING/MainProcess] [email protected] ready. 
[2015-07-15 08:23:59,471: INFO/Beat] Scheduler: Sending due task every-second (example.say_hello) 
[2015-07-15 08:23:59,481: INFO/MainProcess] Received task: example.say_hello[2a9d31cb-fe11-47c8-9aa2-51690d47c007] 
[2015-07-15 08:23:59,483: WARNING/Worker-3] Hello, World! 
[2015-07-15 08:23:59,484: INFO/MainProcess] Task example.say_hello[2a9d31cb-fe11-47c8-9aa2-51690d47c007] succeeded in 0.0012782540870830417s: None 
Problemi correlati