I have 1 failed job on failed queue.
$ rq info
failed |█ 1
1 queues, 1 jobs total
As answered by @Byron Ruth, I can get that number this way:
from rq import Queue
from redis import Redis
q = Queue('failed', connection=Redis())
print len (q.jobs)
On rq-dashboard, I see the traceback:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/rq/worker.py", line 588, in perform_job
rv = job.perform()
...
How can I get this traceback using Python code? If that is not possible, any programmatic solution is acceptable (e.g. via Bash).
Not sure whether you have found out the solution. You can get the traceback from exc_info
call. For example:
>>> print(get_failed_queue().jobs[0].exc_info)
Traceback (most recent call last):
File "/Users/ubuntu/.venv/lib/python3.5/site-packages/rq/worker.py", line 700, in perform_job
rv = job.perform()
File "/Users/ubuntu/.venv/lib/python3.5/site-packages/rq/job.py", line 500, in perform
self._result = self.func(*self.args, **self.kwargs)
File "/Users/ubuntu/foo.py", line 17, in foobar
1/0
ZeroDivisionError: division by zero