樱桃开始芹菜任务

时间:2012-02-14 15:34:27

标签: python celery cherrypy

我正在使用cherrypy构建restful接口,我需要启动一些芹菜任务 但它似乎不起作用,我不明白为什么?

Myaybe有人面对这样的事情。

所以,我有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"

和tasks.py

from celery.task import task

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

我正在推出芹菜

celeryd -l INFO     

我还有一个请求处理程序(CherryPy)

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

我可以从python控制台调用create_agent.delay(1)任务,芹菜工作者可以完成任务和工作 但是当在cherrypy中调用create_agent.delay(1)时(通过触摸适当的url) 芹菜工人根本没有完成任务。

还有更多。我使用python3.2

1 个答案:

答案 0 :(得分:4)

如果你以调试模式(celeryd -l debug)运行celeryd,你应该得到一个提示:

[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.

(为了将来参考,当您遇到类似问题时,请在debug模式下运行celeryd; info不会告诉您太多。)

那个bit.ly url指向这个: http://ask.github.com/celery/userguide/tasks.html#automatic-naming-and-relative-imports

您应该可以通过将装饰器更改为此来解决此错误: @task(name='tasks.create_agent')

我正在运行python 2.7和芹菜2.3.1。我能够重现你的问题,上面的修复对我有用。

我希望有所帮助。