试图了解芹菜如何与来自以下链接的狂犬病to起作用
代码:
from celery import Celery
app=Celery('tasks',backend='amqp',broker='amqp://')
@app.task(ignore_result=True)
def print_hello():
print 'hello'
for i in xrange(2,222222):
print i
print_hello()问题:
celery worker -A celery_test -n 1.%h &的用途是什么?我可以直接运行python脚本。发布于 2016-02-03 10:43:26
celery worker -A celery_test -n 1.%h &**?的用途是什么?我可以直接运行python脚本。**您可以直接运行脚本,这是正确的,但您必须手动执行。
芹菜是这样工作的:
当然,我忽略了一些细节(芹菜提供了许多有趣的特性),我想说的是,芹菜是关于将任务从一个应用程序启动到一个工人云中。
因此,手动运行脚本没有好处。你应该远程启动一些任务,这样芹菜才会有用。
您必须删除ignore_result=True (您已经删除了)。然后,从启动任务的应用程序中,您可以在任务完成后检索结果。摘录自指导您所遵循的
要检查任务是否完成,我们可以使用
.ready方法: ..。 我们可以使用.get方法得到这个值。
注意,.get将给出任务的返回值,而不是输出。您的print_hello()正在生成输出,但没有返回任何内容:.get将返回None。
如果您想从其他地方(而不是从启动任务的应用程序)获得结果,可以使用task_id。
发布于 2016-02-03 10:42:12
celery worker启动员工。
在您的脚本中,您同步调用任务,因此它将立即执行,而不是在rabbitmq中排队,然后传递给工人。在web应用程序的上下文中,您需要以不同的方式安排任务(请参阅有关调用任务的芹菜文档)。发布于 2016-02-03 10:42:30
关于问题2:
from path.to module import print_hello
task_result = print_hello.apply_async((10,), {})
result = task_result.get()https://stackoverflow.com/questions/35174329
复制相似问题