2015-03-15 1 views
0

Je suis coincé avec l'exécution de céleri 3.1.17 sur Windows 7 (et plus tard sur le serveur 2013) en utilisant redis comme backend.Courir céleri battre sur les fenêtres - mission impossible?

Dans mon fichier celery.py je défini une application avec une tâche scheudled

app = Celery('myapp', 
     backend='redis://localhost', 
     broker='redis://localhost', 
     include=['tasks'] 
) 

app.conf.update(
    CELERYBEAT_SCHEDULE = { 
     'dumdum': { 
      'task': 'tasks.dumdum', 
      'schedule': timedelta(seconds=5), 
     } 
     } 
) 

La tâche est en train d'écrire une ligne dans un fichier

@app.task 
def dumdum(): 
    with open('c:/src/dumdum.txt','w') as f: 
     f.write('dumdum actually ran !') 

L'exécution du service de battement de la ligne de commande

(venv) celery beat -A tasks 
celery beat v3.1.17 (Cipater) is starting. 
__ - ... __ -  _ 
Configuration -> 
    . broker -> redis://localhost:6379/1 
    . loader -> celery.loaders.app.AppLoader 
    . scheduler -> celery.beat.PersistentScheduler 
    . db -> celerybeat-schedule 
    . logfile -> [stderr]@%INFO 
    . maxinterval -> now (0s) 
[2015-03-15 10:50:33,265: INFO/MainProcess] beat: Starting... 
[2015-03-15 10:50:35,496: INFO/MainProcess] Scheduler: Sending due task dumdum (tasks.dumdum) 
[2015-03-15 10:50:40,513: INFO/MainProcess] Scheduler: Sending due task dumdum (tasks.dumdum) 

Cela semble prometteur, mais rien ne se passe. Rien n'est écrit dans le fichier.

Le celery documentation sur runnig battement sur les fenêtres de la référence this article 2011. L'article explique comment exécuter celeryd comme une tâche de planification sur les fenêtres. celeryd a été déprécié depuis et la commande indiquée dans l'article ne fonctionne plus (il n'y a pas de module celery.bin.celeryd).

Alors, quelle est la solution ici?

Merci.

+0

Avez-vous un vrai travailleur en cours d'exécution? Celery beat n'exécute aucune tâche, il ne les met en file d'attente que lorsque cela est approprié. – tuomur

+1

Ouvrez un terminal et exécutez 'celery worker -A tasks -l info' qui démarre une instance de worker et commence à cosumuer les tâches que vous venez de mettre en file d'attente. – ChillarAnand

Répondre

1

j'ai utilisé la commande suivante pour exécuter battement de céleri sur les fenêtres:

python manage.py celery beat

après avoir suivi ces étapes pour l'installation:

Run celery beat on windows

cela a fonctionné pour moi parfaitement bien!