2012-02-14 4 views
1

Je construis une interface reposante en utilisant cherrypy et j'ai besoin de lancer des tâches de céleri Mais il semble ne fonctionne pas et je ne sais pas pourquoi?Lancement des tâches de céleri dans cherrypy

Myaybe quelqu'un a été confronté à un tel.

Donc, j'ai celeryconfig.py

CELERY_RESULT_BACKEND = "database" 
CELERY_RESULT_DBURI = "sqlite:///celerydb.sqlite" 
CELERY_IMPORTS = ("tasks",) 
CELERY_RESULT_ENGINE_OPTIONS = {"echo": True} 
BROKER_TRANSPORT = "sqlalchemy" 
BROKER_HOST = "sqlite:///celerydb.sqlite" 

Et tasks.py

from celery.task import task 

@task 
def create_agent(agent_id): 
    print ("do something") 

Je lance celeryd

celeryd -l INFO  

J'ai aussi un gestionnaire de requêtes (CherryPy)

class Resource(object): 
    def POST(self): 
     create_agent.delay(1) 

Je peux appeler la tâche create_agent.delay (1) à partir de la console python et celery worker obtient la tâche et le travail Mais quand create_agent.delay (1) est appelé dans cherrypy (en touchant l'URL appropriée) celery worker ne reçoit pas la tâche du tout.

Et plus encore. J'utilise python3.2

Répondre

4

Si vous exécutez celeryd en mode débogage (celeryd -l debug), vous devriez obtenir un indice:

 
[2012-02-15 09:34:35,484: ERROR/MainProcess] Received unregistered task of type 'default.create_agent'. 
The message has been ignored and discarded. 

Did you remember to import the module containing this task? 
Or maybe you are using relative imports? 
Please see http://bit.ly/gLye1c for more information. 

(Pour référence ultérieure, exécutez celeryd en mode debug lorsque vous avez des problèmes comme celui-ci; info ne va pas vous dire beaucoup)

que les points d'URL bit.ly à ceci:. http://ask.github.com/celery/userguide/tasks.html#automatic-naming-and-relative-imports

vous devriez être en mesure de résoudre cette erreur en changeant votre déco rator à ceci: @task(name='tasks.create_agent')

Je cours python 2.7 et céleri 2.3.1. J'ai été capable de reproduire votre problème et le correctif ci-dessus a fonctionné pour moi.

J'espère que cela aide.

+1

C'était une situation très stupide. J'ai lancé la commande 'celeryd -l' info étant indirecte qui ne contient pas le fichier celeryconfig.py. Je viens de faire 'cd./Src' et' celeryd -l info' et cela a fonctionné comme un charme Merci de votre aide. –

Questions connexes