当前位置:首页 » Python爬虫 » python请求超时再次请求解决方案

python请求超时再次请求解决方案

194°c 2021年04月13日 10:26 Python爬虫 0条评论
  移步手机端

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章

在运用中,有时会 依靠第三方模块实行方法,例如启用某模块的网页上传,数据库等实际操作的情况下,假如发生网络问题或别的难题,很有可能有请求超时再次要求的状况;

现阶段的解决方法有

1. 信号量,但不兼容window;

2.多线程,可是 如果是很多的数据信息反复实际操作尝试,会发生线程多头管理,打开几万个线程的难题;

3.融合选用 eventlet 和 retrying模块 (eventlet 原理有待深入分析)

下边的方法完成:超出特定時间再次尝试某一方法

# -*- coding: utf-8 -*-
import random
import time
import eventlet
from retrying import retry
eventlet.monkey_patch()
class RetryTimeOutException(Exception):
  def __init__(self, *args, **kwargs):
    pass
def retry_if_timeout(exception):
  """Return True if we should retry (in this case when it's an IOError), False otherwise"""
  return isinstance(exception, RetryTimeOutException)
def retry_fun(retries=3, timeout_second=2):
  """
  will retry ${retries} times when process time beyond ${timeout_second} ;
  :param retries: The retry times
  :param timeout_second: The max process time
  """
  def retry_decor(func):
    @retry(stop_max_attempt_number=retries, retry_on_exception=retry_if_timeout)
    def decor(*args, **kwargs):
      print("In retry method..")
      pass_flag = False
      with eventlet.Timeout(timeout_second, False):
        r = func(*args, **kwargs)
        pass_flag = True
        print("Success after method.")
      if not pass_flag:
        raise RetryTimeOutException("Time out..")
      print("Exit from retry.")
      return r
    return decor
  return retry_decor
def do_request():
  print("begin request...")
  sleep_time = random.randint(1, 4)
  print("request sleep time: %s." % sleep_time)
  time.sleep(sleep_time)
  print("end request...")
  return True
@retry_fun(retries=3)
def retry_request():
  r = do_request()
  print(r)
if __name__ == '__main__':
  retry_request()

之上便是文中的所有内容,期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多的适用大家。

欢迎阅读本文,希望本文对您有所帮助!

本文链接:http://www.cqrxzs.com/3659.html

版权声明:本文为原创文章,版权归 雨凡教育 所有,欢迎分享本文,转载请保留出处!

百度推荐获取地址:http://tuijian.baidu.com/,百度推荐可能会有一些未知的问题,使用中有任何问题请直接联系百度官方客服!

评论(0) 赞助本站

发表评论:


【顶】 【踩】 【好】 【懵】 【赞】 【表情】

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

推荐阅读
04月21日

python完成猜数字游戏

发布 : | 分类 : Python爬虫 | 评论 : 0人 | 浏览 : 4512次

表明: 本例取材于《Python编程快速上手》。事例非常简单我不多讲了 立即上代码,给入门python练习用。 让你6次机遇猜对一个事先转化成好的1-20中间的整数。遮盖一下知识要点: if语句 操纵句子 random涵数 载入输入 错误处理 代码: """ 猜数字 """ from random import * secretNumber = randint(1, 20) # print(secretNumber) print('猜一个1-20中间的整数。') pri...

04月21日

Python pip 安装与应用(安装、升级、删除)

发布 : | 分类 : Python爬虫 | 评论 : 0人 | 浏览 : 4203次

pip 是 Python 包可视化工具,该专用工具出示了对Python 包的搜索、下载、安装、卸载掉的作用。 pip检验升级 命令:pip list –outdated pip升级包 命令:pip install --upgrade packagename pip卸载包 命令:pip uninstall packagename pip -i 和 -U 主要参数 事例: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple...

04月20日

python集合的创建、添加及删除操作示例

发布 : | 分类 : Python爬虫 | 评论 : 0人 | 浏览 : 341次

文中案例叙述了python集合的建立、加上及删掉实际操作。共享给大伙儿供大伙儿参照,实际以下: 集合时混乱可变的编码序列,集合中的原素放到{}内,集合中的原素具备唯一性。 集合中只有包含数据、字符串数组、元组等不可变的种类数据信息(换句话说可hach),而不可以包含列表、字典、集合等可变的种类数据信息 1.集合的建立 方式一:把集合立即取值给一个自变量 >>> num={1,2,3,4} 方式二:应用range目标 >>> a=set(range(...

04月20日

python的命名规则知识点总结

发布 : | 分类 : Python爬虫 | 评论 : 0人 | 浏览 : 344次

python命名标准 命名设计风格 python几类不一样命名设计风格 骆驼峰式命名法(WjW) 混合式教学命名法(wjWj) 大写(WJWJWJ)或大写加下划线(WJWJWJ) 作为前缀(wjing)或后缀名(ingwj)下划线,有时候双下划线 变量 python变量分成: (1)常量 (2)公有制和独享变量 1.常量 常量全局性变量,应用大写加下划线。特定的变量表明一个常标值。 BASE_DIR = os.path.dirname(os.path.dirname(os.path.absp...

04月19日

golang生成指定位数的随机数的方法

发布 : | 分类 : Python爬虫 | 评论 : 0人 | 浏览 : 318次

1.随机数 随机数,是应用一个可预测性的优化算法推算出来随机数序。在软件开发中常常必须造成随机数,如随机数短信验证码登录、做为唯一真实身份标志数据信息这些。 2.rand库 golang中造成随机数关键有两个包,分别是“math/rand”和“crypto/rand”。 “math/rand”的rand包完成了伪随机数生成器。 "crypto/rand"的rand包完成了用以加解密的更安全性的随机数生成器。 3.生成特定十位数随机数 以生成六位随机数为例子 package main impo...

04月19日

Python3完成zip分卷压缩过程解析

发布 : | 分类 : Python爬虫 | 评论 : 0人 | 浏览 : 329次

应用zipfile库 查询 官方网中文文档 利用 Python 缩小 ZIP 文档,大家第一反应是应用 zipfile 库,殊不知,它的官方网文档中却确立标明“此控制模块现阶段不可以解决分卷 ZIP 文档”,(⊙﹏⊙) 瞎折腾历经 翻边了Google、CSDN、Stackoverflow等服务平台均找不到解决方法,最可靠的是启用外界解压程序完成分卷压缩的作用。可是,怎样不借助外界程序代码这一作用呢?? 因此,只有自身渐渐地造轮子。看见 ZIP 格式房地产商留有的文档 ZIP File Form...

04月19日

Django之应用celery和NGINX生成静态页面完成性能优化

发布 : | 分类 : Python爬虫 | 评论 : 0人 | 浏览 : 297次

性能优化原理: 当我们要给client浏览器返回一个页面时,我们需要去数据库查询数据并将数据和基本页面模板渲染形成页面返回给客户端,但如果每一个用户访问时都去查询一次首页的的数据时,当日访问量很大时那么无疑会给数据库查询带来很大的性能问题。为了解决这个问题,我们可以给未登录用户返回一个早就渲染好的静态首页(给已登录的用户返回一个调用缓存数据和个人数据渲染的页面),这样就可以提高网站的性能了。 使用celery生成静态首页 生成静态页面原理: 在一个为静态首页准备的基础模板之上,获取数据,使用d...

您好,欢迎到访网站!
  查看权限