Skip to content

Commit 36da3f6

Browse files
committed
Have manage.py queue_depths take multiple queues and return their depths
1 parent 3025c74 commit 36da3f6

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

django_dbq/management/commands/queue_depth.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@ class Command(BaseCommand):
77
help = "Print the current depth of the given queue"
88

99
def add_arguments(self, parser):
10-
parser.add_argument("queue_name", nargs="?", default="default", type=str)
10+
parser.add_argument("queue_name", nargs="*", default=["default"], type=str)
1111

1212
def handle(self, *args, **options):
13-
queue_name = options["queue_name"]
13+
queue_names = options["queue_name"]
1414
queue_depths = Job.get_queue_depths()
1515

1616
self.stdout.write(
17-
"queue_name={queue_name} queue_depth={depth}".format(
18-
queue_name=queue_name, depth=queue_depths.get(queue_name, 0),
17+
" ".join(
18+
[
19+
f"{queue_name}={queue_depths.get(queue_name, 0)}"
20+
for queue_name in queue_names
21+
]
1922
)
2023
)

django_dbq/tests.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,32 @@ def test_queue_depth(self):
117117
stdout = StringIO()
118118
call_command("queue_depth", stdout=stdout)
119119
output = stdout.getvalue()
120-
self.assertEqual(output.strip(), "queue_name=default queue_depth=2")
120+
self.assertEqual(output.strip(), "default=2")
121+
122+
def test_queue_depth_multiple_queues(self):
123+
124+
Job.objects.create(name="testjob", state=Job.STATES.FAILED)
125+
Job.objects.create(name="testjob", state=Job.STATES.NEW)
126+
Job.objects.create(name="testjob", state=Job.STATES.FAILED)
127+
Job.objects.create(name="testjob", state=Job.STATES.COMPLETE)
128+
Job.objects.create(name="testjob", state=Job.STATES.READY)
129+
Job.objects.create(
130+
name="testjob", queue_name="testqueue", state=Job.STATES.READY
131+
)
132+
Job.objects.create(
133+
name="testjob", queue_name="testqueue", state=Job.STATES.READY
134+
)
135+
136+
stdout = StringIO()
137+
call_command("queue_depth", queue_name=("default", "testqueue",), stdout=stdout)
138+
output = stdout.getvalue()
139+
self.assertEqual(output.strip(), "default=2 testqueue=2")
121140

122141
def test_queue_depth_for_queue_with_zero_jobs(self):
123142
stdout = StringIO()
124-
call_command("queue_depth", queue_name="otherqueue", stdout=stdout)
143+
call_command("queue_depth", queue_name=("otherqueue",), stdout=stdout)
125144
output = stdout.getvalue()
126-
self.assertEqual(output.strip(), "queue_name=otherqueue queue_depth=0")
145+
self.assertEqual(output.strip(), "otherqueue=0")
127146

128147

129148
@freezegun.freeze_time()

0 commit comments

Comments
 (0)