Python 芹菜配兔子MQ为什么要启动芹菜流程
试图了解芹菜是如何与rabbitmq一起使用的 代码: 问题:Python 芹菜配兔子MQ为什么要启动芹菜流程,python,rabbitmq,celery,Python,Rabbitmq,Celery,试图了解芹菜是如何与rabbitmq一起使用的 代码: 问题: 运行芹菜工人-芹菜测试-n1.%h&有什么用?我可以直接运行python脚本 如果要读取被调用函数中的结果,如: from celery import Celery app=Celery('tasks',backend='amqp',broker='amqp://') @app.task() def print_hello(n): print 'hello' for i in xrange(2,n):
from celery import Celery
app=Celery('tasks',backend='amqp',broker='amqp://')
@app.task()
def print_hello(n):
print 'hello'
for i in xrange(2,n):
print i
# continue the code from here after the above processing
芹菜工作程序启动工作程序的原因
在脚本中,您同步调用该任务,因此它将立即执行,而不是在rabbitmq中排队并传递给工人。在web应用程序的上下文中,您需要以不同的方式安排任务(请参阅芹菜文档)
芹菜工作程序启动工作程序的原因
在脚本中,您同步调用该任务,因此它将立即执行,而不是在rabbitmq中排队并传递给工人。在web应用程序的上下文中,您需要以不同的方式安排任务(请参阅芹菜文档)
from path.to module import print_hello
task_result = print_hello.apply_async((10,), {})
result = task_result.get()
关于问题2:
from path.to module import print_hello
task_result = print_hello.apply_async((10,), {})
result = task_result.get()
- 您有一个或多个工人在某处运行李>
- 应用程序需要请求工作人员执行某些任务。它将消息放入队列(在本例中为RabbitMQ)
- 芹菜收到消息,要求其中一名工人执行任务
ignore\u result=True
(您已经删除了)。然后,在启动任务的应用程序中,您可以在任务完成后检索结果。摘自:
要检查任务是否完成,我们可以使用.ready
方法:
[……]
我们可以使用.get
方法来获取值
请注意,.get
将为您提供任务的返回值,而不是输出。您的print\u hello()
正在生成输出,但没有返回任何内容:.get
将返回None
如果希望从其他地方(而不是从启动任务的应用程序)获得结果,可以使用
- 您有一个或多个工人在某处运行李>
- 应用程序需要请求工作人员执行某些任务。它将消息放入队列(在本例中为RabbitMQ)
- 芹菜收到消息,要求其中一名工人执行任务
ignore\u result=True
(您已经删除了)。然后,在启动任务的应用程序中,您可以在任务完成后检索结果。摘自:
要检查任务是否完成,我们可以使用.ready
方法:
[……]
我们可以使用.get
方法来获取值
请注意,.get
将为您提供任务的返回值,而不是输出。您的print\u hello()
正在生成输出,但没有返回任何内容:.get
将返回None
如果您希望从其他地方(而不是从启动任务的应用程序)获得结果,你可以使用。对不起-你能重新措辞问题1-你问的不完全清楚。对不起-你能重新措辞问题1-你问的不完全清楚。你有一个或多个工人在某处运行:你是说工人是芹菜任务吗?另外,如果任务是自动处理的,那么就不需要运行命令芹菜工人-芹菜测试-n1。%h&??@Rajeev:任务是Python函数;工作进程是按要求执行此类任务的进程。当然。但您是说我们不需要显式运行此命令吗?或者为什么要运行这个命令?芹菜工人-芹菜测试-n1.%h&@Rajeev:是的,您必须运行该命令:启动工人需要它。如果你没有工人,谁来执行你的任务?但这也是一个手动过程,对吗?我