爬虫重试模块 retrying

安装模块

pip install retrying

retry 参数定义

  • stop_max_attempt_number
    在停止之前尝试的最大次数,最后一次如果还是有异常就会抛出异常,停止运行,默认是五次(强调总次数)
  • stop_max_delay
    最大延迟时间,大概的意思就是:如果调用的函数抛出异常了,那么就会重复调用这个函数,最大调用时间,默认100毫秒
  • wait_random_min
    在两次调用方法停留时长,停留最短的时间,默认是0
  • wait_random_max
    在两次调用方法停留时长,停留最长时间,默认是1000毫秒
  • wait_incrementing_increment
    每调用一次就会增加的时长,默认是100毫秒
  • retry_on_result
    指定一个函数,如果指定的函数返回True,就重试,否则抛出异常退出

用法

@retry(stop_max_attempt_number=3, wait_random_min=1000, wait_random_max=5000)
def request(url)
    print('start: %s' % datetime.now())
    response = requests.get(url, timeout=5)
    if response.status_code != 200:
        raise Exception('unexpected status_code : %s !' % response.status_code)
    return response.text

def get_one_page(url):
    try:
        return request(url)
    except Exception as e:
        logger.error(f'{url}\n{e}')


def retry_if_result_none(result):
    return result is None

@retry(stop_max_delay=1000, retry_on_result=retry_if_result_none)
def run():
    print('start %s' % datetime.now())
    return 

你可能感兴趣的:(爬虫重试模块 retrying)