Merge pull request #502 from telmobarros/master

Add broker name in Schedule and enhanced Queued Tasks list display admin
This commit is contained in:
Ilan Steemers
2021-02-11 17:51:32 +01:00
committed by GitHub
3 changed files with 15 additions and 2 deletions
+2
View File
@@ -99,6 +99,8 @@ class QueueAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
"""Don't allow adds."""
return False
list_filter = ("key",)
admin.site.register(Schedule, ScheduleAdmin)
+6 -1
View File
@@ -633,7 +633,12 @@ def scheduler(broker: Broker = None):
)
s.repeats += -1
# send it to the cluster
q_options["broker"] = broker
scheduled_broker = broker
try:
scheduled_broker = get_broker(q_options["broker_name"])
except: # invalid broker_name or non existing broker with broker_name
pass
q_options["broker"] = scheduled_broker
q_options["group"] = q_options.get("group", s.name or s.id)
kwargs["q_options"] = q_options
s.task = django_q.tasks.async_task(s.func, *args, **kwargs)
+7 -1
View File
@@ -28,10 +28,11 @@ You can manage them through the :ref:`admin_page` or directly from your code wit
)
# In case you want to use q_options
# Specify the broker by using the property broker_name in q_options
schedule('math.sqrt',
9,
hook='hooks.print_result',
q_options={'timeout': 30},
q_options={'timeout': 30, 'broker_name': 'broker_1'},
schedule_type=Schedule.HOURLY)
# Run a schedule every 5 minutes, starting at 6 today
@@ -117,6 +118,11 @@ Reference
:param datetime next_run: Next or first scheduled execution datetime.
:param dict q_options: options passed to async_task for this schedule
:param kwargs: optional keyword arguments for the scheduled function.
.. note::
q_options does not accept the 'broker' key with a broker instance but accepts a 'broker_name' key instead. This can be used to specify the broker connection name to assign the task. If a broker with the specified name does not exist or is not running at the moment of placing the task in queue it fallbacks to the random broker/queue that handled the schedule.
.. class:: Schedule