@@ -115,9 +115,22 @@ def set_run_failure(job, connection, type, value, traceback):
115115 run .set_run_ended (exitcode = 1 , output = f"value={ value } trace={ traceback } " )
116116
117117
118+ def enqueue_run (run ):
119+ pipeline_schedule = run .pipeline
120+ queue = queues .get (pipeline_schedule .get_run_priority_display ())
121+
122+ job = queue .enqueue (
123+ execute_pipeline ,
124+ pipeline_schedule .pipeline_id ,
125+ run .run_id ,
126+ job_id = str (run .run_id ),
127+ on_failure = set_run_failure ,
128+ job_timeout = f"{ pipeline_schedule .execution_timeout } h" ,
129+ )
130+
131+
118132def enqueue_pipeline (pipeline_id ):
119133 pipeline_schedule = models .PipelineSchedule .objects .get (pipeline_id = pipeline_id )
120- queue = queues .get (pipeline_schedule .get_run_priority_display ())
121134
122135 if pipeline_schedule .status in [
123136 models .PipelineRun .Status .RUNNING ,
@@ -134,14 +147,8 @@ def enqueue_pipeline(pipeline_id):
134147 run = models .PipelineRun .objects .create (
135148 pipeline = pipeline_schedule ,
136149 )
137- job = queue .enqueue (
138- execute_pipeline ,
139- pipeline_id ,
140- run .run_id ,
141- job_id = str (run .run_id ),
142- on_failure = set_run_failure ,
143- job_timeout = f"{ pipeline_schedule .execution_timeout } h" ,
144- )
150+
151+ enqueue_run (run )
145152
146153
147154def dequeue_job (job_id ):
@@ -152,6 +159,12 @@ def dequeue_job(job_id):
152159 queue .remove (job_id )
153160
154161
162+ def is_job_in_queue (job_id ):
163+ """Return whether a job exists in any queue."""
164+
165+ return any (job_id in queue .jobs for queue in queues .values ())
166+
167+
155168def compute_queue_load_factor ():
156169 """
157170 Compute worker load per queue.
0 commit comments