上次重试 Redis 队列 运行 函数
Redis queue run function on last retry
我正在使用 python-rq Retry()
functionality with the on_failure
回调。问题是 on_failure
函数在作业每次失败后运行,因此它不允许以不同于以前的 reties 的方式处理最后一次重试。
就我而言,我想仅在所有重试失败时才将我的作业标记为失败。那可能吗?我被困在这里,所以我没有尝试其他任何东西。
到目前为止,我已经尝试使用 FailedJobRegistry()
来计算作业的失败次数,但它似乎不支持此类功能。
我设法解决了这个问题,方法是在 on_failure
函数中检查作业具有 0
或 None
在 运行 实际 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
我正在使用 python-rq Retry()
functionality with the on_failure
回调。问题是 on_failure
函数在作业每次失败后运行,因此它不允许以不同于以前的 reties 的方式处理最后一次重试。
就我而言,我想仅在所有重试失败时才将我的作业标记为失败。那可能吗?我被困在这里,所以我没有尝试其他任何东西。
到目前为止,我已经尝试使用 FailedJobRegistry()
来计算作业的失败次数,但它似乎不支持此类功能。
我设法解决了这个问题,方法是在 on_failure
函数中检查作业具有 0
或 None
在 运行 实际 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