zoukankan      html  css  js  c++  java
  • python @retry request

    依赖:pip install retrying

    在爬虫代码的编写中,requests请求网页的时候常常请求失败或错误,一般的操作是各种判断状态和超时,需要多次重试请求,这种情况下,如果想优雅的实现功能,可以学习下retrying包下的retry装饰器的使用

    安装:pip install retrying

    在@retry()装饰器中,比较重要的几个参数如下:

    stop_max_attempt_number:在停止之前尝试的最大次数,最后一次如果还是有异常则会抛出异常,停止运行,默认为5次

    wait_random_min:在两次调用方法停留时长,停留最短时间,默认为0,单位毫秒

    wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

    retry_on_result:指定一个函数,如果指定的函数返回True,则重试,否则抛出异常退出

    retry_on_exception: 指定一个函数,如果此函数返回指定异常,则会重试,如果不是指定的异常则会退出

    这里只摘录几个常用的方法,想了解其他的方法,请自行查阅 

    直接上例子:
    # encoding:utf-8
    import traceback
    from retrying import retry
    import requests
    from user_agent import agert as ag
    import random 
    def _result(result):
        return result is None
    
    
    def header(header):
        try:
            if header != None:
                header['User-Agent'] = random.choice(ag)
            else:
                header = {'User-Agent': random.choice(ag)}
            return header
        except Exception as e:
            traceback.print_exc(e) 
    @retry(stop_max_attempt_number=5, wait_random_min=1000, wait_random_max=2000, retry_on_result=_result)
    def My_Request_Get(url, headers=None):
            headers = header(headers)
            # with open('./proxy_txt', 'r') as f:
            #     proxy = f.readline()
            #     proxy = json.loads(proxy)
            # print proxy, type(proxy), '/*-'*10
            response = requests.get(url, headers=headers, timeout=6)
            if response.status_code != 200:
                raise requests.RequestException('my_request_get error!!!!')
            return response
  • 相关阅读:
    Lucene.Net 2.3.1开发介绍 —— 二、分词(一)
    控制‘控制台应用程序’的关闭操作
    详解for循环(各种用法)
    敏捷软件开发
    Sql Server的一些知识点
    在SharePoint 2010 中配置Remote Blob Storage FILESTREAM Provider
    使用LotusScript操作Lotus Notes RTF域
    JOpt Simple 4.5 发布,命令行解析器
    John the Ripper 1.8.0 发布,密码破解工具
    PacketFence ZEN 4.0.1 发布,网络接入控制
  • 原文地址:https://www.cnblogs.com/lshan/p/11752102.html
Copyright © 2011-2022 走看看