上次重试 Redis 队列 运行 函数

Redis queue run function on last retry

我正在使用 python-rq Retry() functionality with the on_failure 回调。问题是 on_failure 函数在作业每次失败后运行,因此它不允许以不同于以前的 reties 的方式处理最后一次重试。

就我而言,我想仅在所有重试失败时才将我的作业标记为失败。那可能吗?我被困在这里,所以我没有尝试其他任何东西。

到目前为止,我已经尝试使用 FailedJobRegistry() 来计算作业的失败次数,但它似乎不支持此类功能。

我设法解决了这个问题,方法是在 on_failure 函数中检查作业具有 0None 在 运行 实际 on_failure 之前重试逻辑。

所以我的工作被列为:

job = queue.enqueue(
        _function, 
        job_timeout=timeout,
        retry=Retry(max=5),
        on_failure=report_failure,
    )

report_failure() 为:

def report_failure(job, connection, type, value, traceback):
    """
    Flag a job as failed if it has 0 or None reties left
    """

    if job.retries_left:
        return

    #...
    # Implement failed on last retry logic