猿问

Python 重试包 - 坚韧:如何记录异常的根本原因?

正如在这个问题中所讨论的,我正在使用坚韧进行重试。


玩具代码如下所示


import logging

from tenacity import retry

import tenacity



@retry(wait=tenacity.wait_incrementing(start=10, increment=10, max=100), stop=tenacity.stop_after_attempt(3))

def print_msg():

    logging.info('Hello')

    logging.info("World")

    raise Exception('Test error')



if __name__ == '__main__':

    logging.basicConfig(

        format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',

        datefmt='%d-%m-%Y:%H:%M:%S',

        level=logging.INFO)

    logging.info('Starting')

    print_msg()

输出如下所示


21-11-2018:12:40:48,586 INFO     [retrier.py:18] Starting

21-11-2018:12:40:48,586 INFO     [retrier.py:8] Hello

21-11-2018:12:40:48,586 INFO     [retrier.py:9] World

21-11-2018:12:40:58,592 INFO     [retrier.py:8] Hello

21-11-2018:12:40:58,592 INFO     [retrier.py:9] World

21-11-2018:12:41:18,596 INFO     [retrier.py:8] Hello

21-11-2018:12:41:18,596 INFO     [retrier.py:9] World

21-11-2018:12:41:18,596 ERROR    [retrier.py:22] Received Exception

Traceback (most recent call last):

  File "/Users/dmanna/PycharmProjects/demo/retrier.py", line 20, in <module>

    print_msg()

  File "/Users/dmanna/PycharmProjects/demo/venv/lib/python2.7/site-packages/tenacity/__init__.py", line 292, in wrapped_f

    return self.call(f, *args, **kw)

  File "/Users/dmanna/PycharmProjects/demo/venv/lib/python2.7/site-packages/tenacity/__init__.py", line 358, in call

    do = self.iter(retry_state=retry_state)

  File "/Users/dmanna/PycharmProjects/demo/venv/lib/python2.7/site-packages/tenacity/__init__.py", line 332, in iter

    six.raise_from(retry_exc, fut.exception())

  File "/Users/dmanna/PycharmProjects/demo/venv/lib/python2.7/site-packages/six.py", line 737, in raise_from

    raise value

RetryError: RetryError[<Future at 0x109fa6150 state=finished raised Exception>]

有人可以让我知道如何记录异常的根本原因吗?


牧羊人nacy
浏览 96回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答