python - 将父任务参数传递给所有 celery 子任务

标签 python celery

给定以下任务:

@app.task
def task1(v1, v2):
    return "val3"

@app.task
def task2(v1, v2, v3):
    return "val4"

@app.task
def task3(v1, v2, v3):
    return "val4"

给定以下工作流程:

workflow = chain(
    task1.s(),
    group(
        task2.s(),
        task3.s()
    )
)

result = workflow.delay("val1", "val2")

如何让 celery 将原始参数 val1val2 传递给 task2task3 inside团体。 task1 的结果是唯一传递的值。

最佳答案

task.s() 只是一个签名(部分函数)。如果需要,您可以随时向它传递一些参数。

因此您可以使用此工作流程。

x = 'my first arg'
y = 'my second arg'

workflow = chain(task1.s(x, y), group(task2.s(x, y), task3.s(x, y)))
result = workflow.delay()

另请注意,第一个任务的结果作为第一个参数传递给下一个任务。

关于python - 将父任务参数传递给所有 celery 子任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26124963/

相关文章:

python - 使用 python 脚本生成 pdf-latex

python - 如何为 redis.StrictRedis 使用连接池?

python - 棘手的模型继承 - Django

python - 改变 CELERYBEAT_SCHEDULER

python - 使用 Celery 抓取网站

python - 将字符串中的字节发送到 Redis,以便将其用作 Celery 任务的参数

python - Airflow - 按执行日期查找特定 dag id 的 dag 运行,无需时间

Python Celery - 如何分离日志文件

python - 用户启动的后台进程数量有限

python - 如何 "switch to one of the Agg backends"?