@@ -170,6 +170,13 @@ def compute_queue_load_factor():
170170 load_per_queue = {}
171171 seconds_in_24_hr = 86400
172172
173+ with suppress (ConnectionError ):
174+ redis_conn = django_rq .get_connection ()
175+ queue_names = [
176+ w .queue_names ()[0 ] for w in Worker .all (connection = redis_conn ) if w .queue_names ()
177+ ]
178+ worker_per_queue = dict (Counter (queue_names ))
179+
173180 for queue in RQ_QUEUES .keys ():
174181 total_compute_seconds_per_queue [queue ] = sum (
175182 (p .latest_successful_run .runtime / (p .run_interval / 24 ))
@@ -178,25 +185,22 @@ def compute_queue_load_factor():
178185 )
179186 if p .latest_successful_run
180187 )
181-
182- with suppress (ConnectionError ):
183- redis_conn = django_rq .get_connection ()
184- queue_names = [
185- w .queue_names ()[0 ] for w in Worker .all (connection = redis_conn ) if w .queue_names ()
186- ]
187- worker_per_queue = dict (Counter (queue_names ))
188+ if queue not in worker_per_queue :
189+ worker_per_queue [queue ] = 0
188190
189191 for queue_name , worker_count in worker_per_queue .items ():
192+ net_load_on_queue = "no_worker"
190193 total_compute = total_compute_seconds_per_queue .get (queue_name , 0 )
191- if worker_count == 0 or total_compute == 0 :
194+ if total_compute == 0 :
192195 continue
193196
194197 unit_load_on_queue = total_compute / seconds_in_24_hr
195198
196199 num_of_worker_for_balanced_queue = round (unit_load_on_queue )
197200 addition_worker_needed = max (num_of_worker_for_balanced_queue - worker_count , 0 )
198201
199- net_load_on_queue = unit_load_on_queue / worker_count
202+ if worker_count > 0 :
203+ net_load_on_queue = unit_load_on_queue / worker_count
200204
201205 load_per_queue [queue_name ] = {
202206 "load_factor" : net_load_on_queue ,
0 commit comments