我正在使用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
答案 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。我能够重现你的问题,上面的修复对我有用。
我希望有所帮助。