Skip to content

Commit

Permalink
option to update job timeout according to settings
Browse files Browse the repository at this point in the history
  • Loading branch information
eriktelepovsky committed Nov 30, 2020
1 parent daf9441 commit 2bb29bc
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
4 changes: 3 additions & 1 deletion django_rq/templates/django_rq/job_detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@
<div class="form-row">
<div>
<label class="required">Timeout:</label>
<div class="data">{{ job.timeout }}</div>
<div class="data">{{ job.timeout }}
<br><a href="{% url 'rq_update_timeout_job' queue_index job.id %}">Update timeout</a>
</div>
</div>
</div>

Expand Down
2 changes: 2 additions & 0 deletions django_rq/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,6 @@
views.requeue_job_view, name='rq_requeue_job'),
re_path(r'^queues/(?P<queue_index>[\d]+)/(?P<job_id>[-\w\.\:\$]+)/enqueue/$',
views.enqueue_job, name='rq_enqueue_job'),
re_path(r'^queues/(?P<queue_index>[\d]+)/(?P<job_id>[-\w\.\:\$]+)/update_timeout/$',
views.update_timeout_job, name='rq_update_timeout_job'),
]
25 changes: 25 additions & 0 deletions django_rq/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -497,3 +497,28 @@ def enqueue_job(request, queue_index, job_id):
'queue': queue,
}
return render(request, 'django_rq/delete_job.html', context_data)


@staff_member_required
def update_timeout_job(request, queue_index, job_id):
""" Update timeout of job by queue settings
"""
queue_index = int(queue_index)
queue = get_queue_by_index(queue_index)
job = Job.fetch(job_id, connection=queue.connection)

queue_name = queue.name
old_timeout = job.timeout

from .settings import QUEUES
default_timeout = QUEUES[queue_name].get('DEFAULT_TIMEOUT', None)
new_timeout = default_timeout

if old_timeout != new_timeout:
job.timeout = new_timeout
job.save()
messages.success(request, 'You have successfully changed timeout of job from %d to %s' % (old_timeout, new_timeout))
else:
messages.info(request, 'Job has already default queue timeout')

return redirect('rq_job_detail', queue_index, job_id)

0 comments on commit 2bb29bc

Please sign in to comment.