2017-09-26 1 views
0

J'ai suivi le instruction process to installing and setting up celery, maintenant j'essaye d'exécuter ma tâche. Mon arbre ressemble projet ceci:La tâche de céleri ne s'exécute pas

bin 
draft1-- 
     | 
     -------draft1 ---- 
          | 
          --------celery.py 
          --------tasks.py 
          --------views.py 
     -------manage.py 
     -------templates 

include 
lib 

Voici mon code:

settings.py

CELERY_BROKER_URL = 'amqp://guest:[email protected]:5672//' 

celery.py

import os 
from celery import Celery 

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings') 

app = Celery('app') 
app.config_from_object('django.conf:settings', namespace='CELERY') 
app.autodiscover_tasks() 

tasks.py

from celery import shared_task 

@shared_task 
def print_this(): 
    print('ONE MINUTE') 

app.views

print_this.delay() 

donc ma fonction de céleri ne fonctionne pas, il n'exécute pas l'instruction d'impression. Ce que je veux faire est d'exécuter la fonction chaque minute. Une idée du problème?

Répondre

0

Je pense que vous devez lire plus avant de commencer à expérimenter. Le céleri est une file d'attente de tâches distribuées, ce qui signifie essentiellement qu'il interroge une file d'attente pour voir si une tâche doit être exécutée. Si c'est le cas, il exécute la tâche. À propos de votre installation, vous semblez avoir un programme d'exécution de tâches, mais pas la file d'attente que le programme d'exécution doit interroger pour vérifier s'il y a des tâches à exécuter. La configuration CELERY_BROKER_URL concerne cette file d'attente. Je vous suggère de commencer par lire "Celery's Introduction documents". Surtout "What do I need?" partie.

NOTE POUR APRÈS comprendre Je ne sais pas comment vous exécutez LA QUEUE PARTIE

En outre, et servir votre application django, mais le céleri exige des processus séparés. Pour cette partie, vous devrez parcourir "First Steps with Celery".

+0

J'ai tout lu et je ne suis pas sûr qu'il y ait quelque chose à "comprendre" sur la partie de la file d'attente? J'utilise mon application sur le serveur local de django, donc le 'CELERY_BROKER_URL' devrait être le même pour moi que dans les instructions. J'ai essayé './Bin/celery -A projet1 -l info' dans ma racine de projet (où manage.py est) et il a retourné cette erreur:' AttributeError: module 'draft1' n'a pas d'attribut 'app''/'Pendant la gestion de l'exception ci-dessus, une autre exception s'est produite: '' AttributeError: module 'draft1' n'a pas d'attribut 'celery'' Une idée de ce que cela pourrait signifier? ('draft1 est le nom de mon application') – Zorgan

+0

Avez-vous configuré un serveur de file d'attente? Comme le lapin? –

+0

Oui, mon serveur django et rabbitmq sont en cours d'exécution. – Zorgan