首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >芹菜配兔子为什么要开始芹菜的加工?

芹菜配兔子为什么要开始芹菜的加工?
EN

Stack Overflow用户
提问于 2016-02-03 10:22:55
回答 3查看 210关注 0票数 0

试图了解芹菜如何与来自以下链接的狂犬病to起作用

代码:

代码语言:javascript
运行
复制
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()

问题:

  1. 运行celery worker -A celery_test -n 1.%h &的用途是什么?我可以直接运行python脚本。
  2. 如果希望在被调用的函数中读取结果,请如下所示: 从芹菜进口芹菜app=Celery(‘任务’,后端=‘amqp’,broker='amqp://') @app.task() def print_hello(n):在xrange(2,n)中为i打印'hello‘(2,n):print I#在上面的处理之后从这里继续代码
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-03 10:43:26

  1. 运行celery worker -A celery_test -n 1.%h &**?的用途是什么?我可以直接运行python脚本。**

您可以直接运行脚本,这是正确的,但您必须手动执行。

芹菜是这样工作的:

  • 你有一个或多个工人跑到某个地方;
  • 应用程序需要要求员工完成一些任务。它将消息放在队列上(在本例中为RabbitMQ)。
  • 芹菜收到信息,并要求其中一名工人执行任务。

当然,我忽略了一些细节(芹菜提供了许多有趣的特性),我想说的是,芹菜是关于将任务从一个应用程序启动到一个工人云中。

因此,手动运行脚本没有好处。你应该远程启动一些任务,这样芹菜才会有用。

  1. 如果想在被调用的函数中读取结果,比如,.

您必须删除ignore_result=True (您已经删除了)。然后,从启动任务的应用程序中,您可以在任务完成后检索结果。摘录自指导您所遵循的

要检查任务是否完成,我们可以使用.ready方法: ..。 我们可以使用.get方法得到这个值。

注意,.get将给出任务的返回值,而不是输出。您的print_hello()正在生成输出,但没有返回任何内容:.get将返回None

如果您想从其他地方(而不是从启动任务的应用程序)获得结果,可以使用task_id

票数 2
EN

Stack Overflow用户

发布于 2016-02-03 10:42:12

  1. 芹菜的思想是,任务在不同的进程中异步运行,称为“工人”,可能在许多机器上。您计划任务的应用程序(运行的python脚本)不需要了解您的设置:工作人员实际运行的位置、他们中的多少人等等。这就是为什么您必须自己用celery worker启动员工。 在您的脚本中,您同步调用任务,因此它将立即执行,而不是在rabbitmq中排队,然后传递给工人。在web应用程序的上下文中,您需要以不同的方式安排任务(请参阅有关调用任务的芹菜文档)。
  2. 芹菜可以将任务的结果存储在结果存储中。
票数 1
EN

Stack Overflow用户

发布于 2016-02-03 10:42:30

关于问题2:

代码语言:javascript
运行
复制
from path.to module import print_hello

task_result = print_hello.apply_async((10,), {})
result = task_result.get()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35174329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档