首页 > 解决方案 > 仅当过滤器适用时才入队依赖

问题描述

情况

我对数据有两个步骤要做。第一步和第二步包含多个可以运行的作业。每个 Job 都有一个过滤器,只有当过滤器应用于参数时,才应该运行 Job。步骤 2 的参数是步骤 1 的结果。

步骤1

第一步的过滤很简单:运行所有可能的作业,检查过滤器,仅将适用的作业排入队列。

然后,如果过滤器适用于步骤 1 的结果,则第一步的所有结果都应运行在步骤 2 的所有作业中。

第2步

在将第一步排入队列时,我只是将步骤 2 的所有作业添加到步骤 1 的每个作业中作为依赖项。但这很丑陋,因为通常只有一两个乔布斯适用。我可以全部加入队列,并将过滤器添加到每个 Job 并在它不适用时退出,但我觉得有一个更优雅的解决方案,但我没有找到任何东西。

问题

我可以子类化,IDK,也许是 Worker 或 Job 类来实现过滤器,在 Job 启动之前,但在依赖项返回之后(因为我需要结果来检查过滤器)?我考虑过使用回调将第二个作业排入队列,因为我有结果然后检查过滤器,但我的印象是,该依赖项应该用于链接任务。

我希望这个问题是可以理解的,我不善于解释。

标签: python-rq

解决方案


推荐阅读