【问题标题】:Spin off another Task from inside a task in Celery从 Celery 的任务中分拆另一个任务
【发布时间】:2014-11-22 00:20:01
【问题描述】:

我的要求是从 Celery 的任务中创建另一个任务。传递的参数将取决于父任务的输出。是的,我希望这是一种递归,它在某个点停止(基于一些 IF 子句)。在 Celery 中可以做到这一点吗?

我研究了 Group/Chord/etc 子任务原语。但是,它们不像我想要的那样灵活。 有没有办法做到这一点?

【问题讨论】:

    标签: celery


    【解决方案1】:

    是的。您可以在 Celery 的任务中启动新任务。是的,您可以在 Celery 中递归地启动任务。是的,您可以在任务中编写 if then else 条件。最大的问题是你为什么要这样做?

    @app.task
    def mytask(*args, **kwargs):
        if test_basecase(*args, **kwargs):
            return root_case
        else:
            res = mytask.apply_async(*handle(*args), **khandle(**kwargs))
            #probably starting several tasks then joining them
            return res.result
    

    【讨论】:

    • 我希望能够根据需要进行安排。假设我想在前两天每 2 小时运行一次任务,然后在 5 天间隔 3 小时,然后在接下来的 10 天间隔 20 小时,然后在中途随时根据用户输入停止。当手动告诉我关闭时,我应该能够撤销任务。
    • 你应该重写你的问题。
    猜你喜欢
    • 1970-01-01
    • 2018-01-20
    • 2021-02-05
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 2017-03-27
    • 2017-12-21
    相关资源
    最近更新 更多