0
点赞
收藏
分享

微信扫一扫

超时重试注解py版

minute_5 2023-04-27 阅读 56


import random

import time
import signal
from retrying import retry
from functools import wraps


def run_timeout(time_out):
    def wrapper(fun):
        @wraps(fun)
        def func(*args, **kwargs):
            def handler(signum, frame):
                raise AssertionError
try:
                signal.signal(signal.SIGALRM, handler)
                signal.alarm(time_out)
                return fun(*args, **kwargs)
            except AssertionError:
                print('timeout')
                return 'timeout'
return func
    return wrapper


n = 0
@retry
@run_timeout(1)
def have_a_try():

    global n
    n += 1
print('try {}'.format(n))
    time.sleep(1)
    if random.randint(0, 10) != 5:
        raise Exception('it is not 5')
    print('it is 5')

举报

相关推荐

0 条评论