如何从代码中读取失败队列(rq)上的回溯?

时间:2016-11-07 10:20:11

标签: python bash redis python-rq

我在失败的队列中有1个失败的工作。

$ rq info
failed       |█ 1

1 queues, 1 jobs total

@Byron Ruth的answered,我可以这样得到这个数字:

from rq import Queue
from redis import Redis

q = Queue('failed', connection=Redis())
print len (q.jobs)

在rq-dashboard上,我看到了追溯:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/rq/worker.py", line 588, in perform_job
    rv = job.perform()
    ...

如何使用Python代码获取此回溯?如果无法做到这一点,那么任何命令行解决方案都是可以接受的(比如Bash或类似的)。

1 个答案:

答案 0 :(得分:6)

不确定您是否找到了解决方案。您可以从exc_info电话获取追溯。例如:

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