2016-11-07 41 views
2

我有1個失敗的工作失敗隊列。如何從代碼中讀取失敗隊列上的回溯?

$ rq info 
failed  |█ 1 

1 queues, 1 jobs total 

由於answered通過@Byron露絲,我能得到這個數字是這樣的:

from rq import Queue 
from redis import Redis 

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

在RQ-儀表盤,我看到了回溯:

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或類似的)。

回答

2

不確定您是否找到解決方案。您可以從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