标签: celery-canvas

芹菜连锁表演

我想知道为什么芹菜链与临时解决方案相比如此缓慢。

在临时解决方案中,我手动转发任务,缺点是我无法等待链的末尾。

在下面的代码中,canvas 解决方案需要 16 秒,而 ad hoc 需要 3 秒。想知道与简单的解决方案相比,其他画布内容是否也很慢。

import sys
from celery import Celery, chain
from celery.task import task
from datetime import datetime

broker = "amqp://admin:admin@172.16.1.30:5672/tasks"
backend = 'redis://:redis@172.16.1.30:6379/1'

app = Celery(
    "celery-bench",
    broker=broker,
    backend=backend
)

app.conf.accept_content = ['json']
app.conf.task_serializer = 'json'
app.conf.result_serializer = 'json'

@task(name="result", queue="bench-results")
def result(result):
    return result

@task(name="simple-task-auto-chain", queue="bench-tasks")
def simple_task_auto_chain(date, arg):
    if arg >= 0:
        simple_task_auto_chain.delay(date, arg-1)
        return arg
    else:
        return result.delay(
            "AutoChain %s"%(str(datetime.now() - datetime.fromisoformat(date)))
        )

@task(name="simple-task", queue="bench-tasks")
def simple_task(args):
    date, …
Run Code Online (Sandbox Code Playgroud)

python celery celery-canvas

4
推荐指数
1
解决办法
1293
查看次数

使用Celery Canvas,chord()和chain(group(),task)有什么区别

我们正在用Celery实施工作流程。首先,我们需要并行运行一些任务,当它们全部完成后,我们需要运行一个任务。

看来我们可以使用和弦或群组和链:

chord(tasks, task)
Run Code Online (Sandbox Code Playgroud)

group(tasks) | task
Run Code Online (Sandbox Code Playgroud)

两者之间的确切区别是什么?他们似乎做同样的事情。

python celery celery-canvas

3
推荐指数
1
解决办法
1628
查看次数

标签 统计

celery ×2

celery-canvas ×2

python ×2