queue failed management
This commit is contained in:
@@ -10,34 +10,29 @@
|
|||||||
|
|
||||||
<h1>Failed Que</h1>
|
<h1>Failed Que</h1>
|
||||||
|
|
||||||
<ul class="main-content">
|
<p>
|
||||||
<li class="maxheight grid_4">
|
<a href="/rowers/failedjobs/empty/">Empty Queue</a>
|
||||||
<table width="100%" class="listtable shortpadded">
|
</p>
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Started at</th>
|
|
||||||
<th>Job Function</th>
|
|
||||||
<th>Traceback</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for job in results %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ job|lookup:started_at }}</td>
|
|
||||||
<td>{{ job|lookup:func_name }}</td>
|
|
||||||
<td>{{ job|lookup:traceback }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</li>
|
|
||||||
<li class="grid_4">
|
|
||||||
|
|
||||||
{{ the_div|safe }}
|
<p>
|
||||||
</li>
|
<table width="100%" style="white-space:pre-wrap; word-wrap:break-word">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
</ul>
|
<th>ID</th>
|
||||||
|
<th>Started at</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for job in resultslist %}
|
||||||
|
<tr>
|
||||||
|
<td><a href="/rowers/failedjobs/{{ job|lookuplong:'id' }}">{{ job|lookup:'id' }}</a></td>
|
||||||
|
<td>{{ job|lookup:'started_at' }}</td>
|
||||||
|
<td><pre>{{ job|lookuplong:'traceback1' }}</pre></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|||||||
@@ -262,6 +262,12 @@ def lookup(dict, key):
|
|||||||
s = s[:22]
|
s = s[:22]
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def lookuplong(dict, key):
|
||||||
|
s = dict.get(key)
|
||||||
|
|
||||||
|
return s
|
||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
def ualookup(dict, key):
|
def ualookup(dict, key):
|
||||||
s = dict.get(key)
|
s = dict.get(key)
|
||||||
|
|||||||
@@ -139,6 +139,8 @@ urlpatterns = [
|
|||||||
# re_path(r'^imports/$', views.imports_view),
|
# re_path(r'^imports/$', views.imports_view),
|
||||||
re_path(r'^exportallworkouts/?/$',views.workouts_summaries_email_view,name='workouts_summaries_email_view'),
|
re_path(r'^exportallworkouts/?/$',views.workouts_summaries_email_view,name='workouts_summaries_email_view'),
|
||||||
path('failedjobs/',views.failed_queue_view,name='failed_queue_view'),
|
path('failedjobs/',views.failed_queue_view,name='failed_queue_view'),
|
||||||
|
path('failedjobs/empty/',views.failed_queue_empty,name='failed_queue_empty'),
|
||||||
|
re_path('^failedjobs/(?P<id>\w+.*)/$',views.failed_job_view,name='failed_job_view'),
|
||||||
re_path(r'^update_empower/$',views.rower_update_empower_view,name='rower_update_empower_view'),
|
re_path(r'^update_empower/$',views.rower_update_empower_view,name='rower_update_empower_view'),
|
||||||
re_path(r'^agegroupcp/(?P<age>\d+)/$',views.agegroupcpview,name='agegroupcpview'),
|
re_path(r'^agegroupcp/(?P<age>\d+)/$',views.agegroupcpview,name='agegroupcpview'),
|
||||||
re_path(r'^agegroupcp/(?P<age>\d+)/(?P<normalize>\d+)/$',views.agegroupcpview,name='agegroupcpview'),
|
re_path(r'^agegroupcp/(?P<age>\d+)/(?P<normalize>\d+)/$',views.agegroupcpview,name='agegroupcpview'),
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from rowers.views.statements import *
|
|||||||
|
|
||||||
from rq import Queue
|
from rq import Queue
|
||||||
from redis import Redis
|
from redis import Redis
|
||||||
|
from rq.job import Job
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
def failed_queue_view(request):
|
def failed_queue_view(request):
|
||||||
@@ -16,25 +16,54 @@ def failed_queue_view(request):
|
|||||||
|
|
||||||
q = Queue('failed', connection=Redis())
|
q = Queue('failed', connection=Redis())
|
||||||
|
|
||||||
results = []
|
resultslist = []
|
||||||
|
|
||||||
for job in q.jobs:
|
for job in q.jobs:
|
||||||
traceback = job.exc_info
|
traceback = str(job.exc_info)
|
||||||
|
|
||||||
|
|
||||||
info = {
|
info = {
|
||||||
|
'id':job.id,
|
||||||
'started_at': job.started_at,
|
'started_at': job.started_at,
|
||||||
'func_name': job.func_name,
|
'traceback1': traceback,
|
||||||
'traceback': traceback
|
|
||||||
}
|
}
|
||||||
|
|
||||||
results.append(info)
|
|
||||||
|
resultslist += [info]
|
||||||
|
|
||||||
|
|
||||||
return render(request,
|
return render(request,
|
||||||
"failed_jobs.html",
|
"failed_jobs.html",
|
||||||
{
|
{
|
||||||
'results':results,
|
'resultslist':resultslist,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@login_required()
|
||||||
|
def failed_queue_empty(request):
|
||||||
|
if not request.user.is_staff:
|
||||||
|
raise PermissionDenied("Not Allowed")
|
||||||
|
|
||||||
|
q = Queue('failed', connection=Redis())
|
||||||
|
|
||||||
|
q.empty()
|
||||||
|
|
||||||
|
return HttpResponseRedirect(reverse('failed_queue_view'))
|
||||||
|
|
||||||
|
|
||||||
|
@login_required()
|
||||||
|
def failed_job_view(request,id=0):
|
||||||
|
if not request.user.is_staff:
|
||||||
|
raise PermissionDenied("Not Allowed")
|
||||||
|
|
||||||
|
q = Queue('failed', connection=Redis())
|
||||||
|
thejob = q.fetch_job(id)
|
||||||
|
|
||||||
|
thejob.delete()
|
||||||
|
|
||||||
|
return HttpResponseRedirect(reverse('failed_queue_view'))
|
||||||
|
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
def errormessage_view(request,errormessage='aap'):
|
def errormessage_view(request,errormessage='aap'):
|
||||||
if (errormessage=='3dsecure'):
|
if (errormessage=='3dsecure'):
|
||||||
|
|||||||
Reference in New Issue
Block a user