简体   繁体   English

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

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

I have 1 failed job on failed queue.我在失败的队列中有 1 个失败的作业。

$ rq info
failed       |█ 1

1 queues, 1 jobs total

As answered by @Byron Ruth, I can get that number this way:正如@Byron Ruth 所回答的,我可以通过这种方式获得该数字:

from rq import Queue
from redis import Redis

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

On rq-dashboard, I see the traceback:在 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()
    ...

How can I get this traceback using Python code?如何使用 Python 代码获取此回溯? If that is not possible, any programmatic solution is acceptable (eg via Bash).如果这是不可能的,任何程序化的解决方案都是可以接受的(例如通过 Bash)。

Not sure whether you have found out the solution.不知道你是否已经找到了解决方案。 You can get the traceback from exc_info call.您可以从exc_info调用中获取回溯。 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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