简体   繁体   中英

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 (eg 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM