PythonRQ作业是否可以重新安排自己并继续依赖周围的作业?

2024-03-28 19:01:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个PythonRQ作业,可以从Web服务器下载资源

  1. 如果是无响应的Web服务器,下载作业是否可以重新安排自己并在一定间隔后重试下载

  2. 几个转换作业依赖于通过的下载作业

    job_queue.enqueue(transformation_task, depends_on=download_job)

    如果下载作业可以自行重新安排,那么依赖作业是否会一直保留,并在下载作业完成后最终执行


Tags: 服务器webtask间隔queueondownload作业
1条回答
网友
1楼 · 发布于 2024-03-28 19:01:05

我问了关于GitHub项目的问题,该功能现在包含在RQ的1.5.0版中

  1. RQ允许您现在轻松地重试失败的作业。要配置重试,请使用RQ的重试对象,该对象接受maxinterval参数

  2. 依赖作业将保留在延迟作业注册表中,直到它们所依赖的作业成功并仅在此时执行

例如:

from redis import Redis
from rq import Queue, Retry
from somewhere import randomly_failing_task, dependent_task

job_queue = Queue(connection=Redis())
randomly_failing_job = job_queue.enqueue(randomly_failing_task, retry=Retry(max=3))
dependent_job = job_queue.enqueue(dependent_task, depends_on=randomly_failing_job)

以及示例任务:

from random import choice

def randomly_failing_task():
    print('I am a task, I will fail 50% of the times :/')
    success = choice([True, False])
    if success:
        print('I succeed :)')
    else:
        print('I failed :(')
        raise Exception('randomly_failing_task failed!')


def dependent_task():
    print('I depend upon the randomly_failing_task.')
    print('I am only executed, once the randomly_failing_task succeeded.’)

相关问题 更多 >