22
33from pyres import ResQ , __version__
44from pyres .worker import Worker as Wrkr
5+ from pyres import failure
56import os
67TEMPLATE_PATH = os .path .join (os .path .dirname (__file__ ), 'templates' )
78class ResWeb (pystache .View ):
@@ -60,8 +61,8 @@ def empty(self):
6061 return not self ._queue
6162
6263 def fail_count (self ):
63- from pyres .failure import Failure
64- return str (Failure .count (self .resq ))
64+ # from pyres.failure import Failure
65+ return str (failure .count (self .resq ))
6566
6667 def workers (self ):
6768 workers = []
@@ -161,8 +162,25 @@ def __init__(self, host, start=0):
161162 self ._start = start
162163 super (Failed , self ).__init__ (host )
163164
165+ def start (self ):
166+ return str (self ._start )
167+
168+ def end (self ):
169+ return str (self ._start + 20 )
170+
171+ def size (self ):
172+ return str (failure .count (self .resq ) or 0 )
173+
164174 def failed_jobs (self ):
165- return ''
175+ jobs = []
176+ for job in failure .all (self .resq , self ._start , self ._start + 20 ):
177+ item = job
178+ item ['worker_url' ] = '/workers/%s/' % job ['worker' ]
179+ item ['payload_args' ] = ',' .join (job ['payload' ]['args' ])
180+ item ['payload_class' ] = job ['payload' ]['class' ]
181+ item ['traceback' ] = '\n ' .join (job ['backtrace' ])
182+ jobs .append (item )
183+ return jobs
166184
167185class Stats (ResWeb ):
168186 def __init__ (self , host , key_id ):
@@ -354,4 +372,4 @@ def redis_size(key, resq):
354372 item = resq .redis .scard ('resque:' + key )
355373 elif key_type == 'string' :
356374 item = 1
357- return str (item )
375+ return str (item )
0 commit comments