我运行的是芹菜3.1.11和花0.6.0。在
我有一个配置成这样的芹菜应用程序
# myapp.tasks.celery.py
from __future__ import absolute_import
from celery import Celery
class Config(object):
BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp'
CELERY_TASK_RESULT_EXPIRES = None
CELERY_RESULT_SERIALIZER = 'json'
CELERY_INCLUDE = [
'myapp.tasks.source',
'myapp.tasks.page',
'myapp.tasks.diffusion',
'myapp.tasks.place',
]
)
celery = Celery('myapp')
celery.config_from_object(Config)
if __name__ == '__main__':
celery.start()
我使用以下命令执行celery worker:
^{pr2}$我可以在worker输出中看到可用任务的完整列表。在
[tasks]
...
. myapp.tasks.diffusion.post_activity
...
然后,我使用以下命令执行flower服务器:
$ celery -A myapp.tasks flower
现在,每当我试图通过flowerrestapi发布一个新任务时,都会收到一个404错误,并显示一条错误消息“Unknown task task_NAME”。在
[W 140423 12:16:17 web:1302] 404 POST /api/task/async-apply/myapp.tasks.diffusion.post_activity (82.225.61.194): Unknown task 'myapp.tasks.diffusion.post_activity'
[W 140423 12:16:17 web:1728] 404 POST /api/task/async-apply/myapp.tasks.diffusion.post_activity (82.225.61.194) 4.68ms
我在flower API处理程序中设置了一个pdb断点,在处理请求时,似乎只有以下任务可用:
ipdb> pp celery.tasks
{'celery.backend_cleanup': <@task: celery.backend_cleanup of yoda.tasks.celery:0x7fb9191eb490>,
'celery.chain': <@task: celery.chain of yoda.tasks.celery:0x7fb9191eb490>,
'celery.chord': <@task: celery.chord of yoda.tasks.celery:0x7fb9191eb490>,
'celery.chord_unlock': <@task: celery.chord_unlock of yoda.tasks.celery:0x7fb9191eb490>,
'celery.chunks': <@task: celery.chunks of yoda.tasks.celery:0x7fb9191eb490>,
'celery.group': <@task: celery.group of yoda.tasks.celery:0x7fb9191eb490>,
'celery.map': <@task: celery.map of yoda.tasks.celery:0x7fb9191eb490>,
'celery.starmap': <@task: celery.starmap of yoda.tasks.celery:0x7fb9191eb490>}
似乎没有任务可用。但是,当我在shell中使用taskasync_apply()
方法时,任务是由worker执行的。在
你知道我做错什么了吗?谢谢您!在
编辑:当我使用celery 3.0.19和flower 0.5.0时,效果非常好。在
此错误是由于Flower中的错误导致的,现在已解决:
问题:https://github.com/mher/flower/issues/200
正在解析提交:https://github.com/mher/flower/commit/bfba1eec90124c92586c480aebaf98ae63c31276
我也遇到过类似的问题。我的配置是使用redis。在
目前情况有所改善,我已经开始花明确的价值选择“经纪人”(不要问我为什么)。在
在你这种情况下,我会尽力的
总之,我还要确保,您从一个环境启动},该环境可以正确访问所有库。在
celery
和{相关问题 更多 >
编程相关推荐