【问题标题】:How to configure Luigi task retry correctly?如何正确配置 Luigi 任务重试?
【发布时间】:2016-10-24 12:26:00
【问题描述】:

我正在尝试配置 Luigi 的重试机制,以便将失败的任务重试几次。然而,当任务重试成功时,Luigi 退出失败:

===== Luigi Execution Summary =====

Scheduled 3 tasks of which:
* 2 ran successfully:
    - 1 FailOnceThenSucceed(path=/tmp/job-id-18.subtask)
    - 1 MasterTask(path=/tmp/job-id-18)
* 1 failed:
    - 1 FailOnceThenSucceed(path=/tmp/job-id-18.subtask)

This progress looks :( because there were failed tasks

所以问题是:我如何配置 Luigi(我已经使用 pip install 安装了 2.3.3 版),以便当任务失败一次,但随后成功重试时,Luigi 将使用This progress looks :) 成功退出This progress looks :( 失败?

这是我想出的最小调度程序和工作人员配置,以及演示行为的任务:

[scheduler]
retry_count = 3
retry-delay = 1

[worker]
keep_alive=true

mytasks.py:

import luigi


class FailOnceThenSucceed(luigi.Task):
    path = luigi.Parameter()

    def output(self):
        return luigi.LocalTarget(self.path)

    def run(self):
        failmarker = luigi.LocalTarget(self.path + ".hasfailedonce")
        if failmarker.exists():
            with self.output().open('w') as target:
                target.write('OK')
        else:
            with failmarker.open('w') as marker:
                marker.write('Failed')
            raise RuntimeError("Failed once")


class MasterTask(luigi.Task):
    path = luigi.Parameter()

    def requires(self):
        return FailOnceThenSucceed(path=self.path + '.subtask')

    def output(self):
        return luigi.LocalTarget(self.path)

    def run(self):
        with self.output().open('w') as target:
            target.write('OK')

示例执行:

PYTHONPATH=. luigi --module mytasks MasterTask --workers=2 --path='/tmp/job-id-18'

【问题讨论】:

    标签: python luigi


    【解决方案1】:

    这是 Luigi 的一个老问题 - 成功的重试任务在失败时没有标记为这样,然后在重试时成功: https://github.com/spotify/luigi/issues/1932

    在 2.7.2 版本中已修复: https://github.com/spotify/luigi/releases/tag/2.7.2

    我建议您升级到最新的 Luigi 版本,即运行pip install -U luigi

    【讨论】:

      猜你喜欢
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      相关资源
      最近更新 更多