pythonbashredispython-rq

How to read the traceback on failed queue (rq) from code?


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).


Solution

  • 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