Skip to content

Commit 2bb29bc

Browse files
option to update job timeout according to settings
1 parent daf9441 commit 2bb29bc

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

django_rq/templates/django_rq/job_detail.html

+3-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@
5252
<div class="form-row">
5353
<div>
5454
<label class="required">Timeout:</label>
55-
<div class="data">{{ job.timeout }}</div>
55+
<div class="data">{{ job.timeout }}
56+
<br><a href="{% url 'rq_update_timeout_job' queue_index job.id %}">Update timeout</a>
57+
</div>
5658
</div>
5759
</div>
5860

django_rq/urls.py

+2
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,6 @@
4040
views.requeue_job_view, name='rq_requeue_job'),
4141
re_path(r'^queues/(?P<queue_index>[\d]+)/(?P<job_id>[-\w\.\:\$]+)/enqueue/$',
4242
views.enqueue_job, name='rq_enqueue_job'),
43+
re_path(r'^queues/(?P<queue_index>[\d]+)/(?P<job_id>[-\w\.\:\$]+)/update_timeout/$',
44+
views.update_timeout_job, name='rq_update_timeout_job'),
4345
]

django_rq/views.py

+25
Original file line numberDiff line numberDiff line change
@@ -497,3 +497,28 @@ def enqueue_job(request, queue_index, job_id):
497497
'queue': queue,
498498
}
499499
return render(request, 'django_rq/delete_job.html', context_data)
500+
501+
502+
@staff_member_required
503+
def update_timeout_job(request, queue_index, job_id):
504+
""" Update timeout of job by queue settings
505+
"""
506+
queue_index = int(queue_index)
507+
queue = get_queue_by_index(queue_index)
508+
job = Job.fetch(job_id, connection=queue.connection)
509+
510+
queue_name = queue.name
511+
old_timeout = job.timeout
512+
513+
from .settings import QUEUES
514+
default_timeout = QUEUES[queue_name].get('DEFAULT_TIMEOUT', None)
515+
new_timeout = default_timeout
516+
517+
if old_timeout != new_timeout:
518+
job.timeout = new_timeout
519+
job.save()
520+
messages.success(request, 'You have successfully changed timeout of job from %d to %s' % (old_timeout, new_timeout))
521+
else:
522+
messages.info(request, 'Job has already default queue timeout')
523+
524+
return redirect('rq_job_detail', queue_index, job_id)

0 commit comments

Comments
 (0)