http请求 request失败自动重新尝试代码示例

yipeiwu_com6年前Python基础

本文研究的主要是http请求 request失败自动重新尝试的一个例子,具体如下。

需求

最近开发一个项目,要实现的一个场景是对于某个http请求,如果请求失败,需要再自动尝试几次,并记录异常原因便于排查

代码实现

#http连接有问题时候,自动重连
def conn_try_again(function):
 RETRIES = 0
 #重试的次数
 count = {"num": RETRIES}
 def wrapped(*args, **kwargs):
  try:
   return function(*args, **kwargs)
  except Exception, err:
   if count['num'] < 2:
    count['num'] += 1
    return wrapped(*args, **kwargs)
   else:
    raise Exception(err)
 return wrapped

@conn_try_again
def http_request(session, method, url, data, header = header):
  try:
    if method == 'GET':
      r = session.get(url, data = data, headers = header)
      return r
    elif method == 'POST':
      r = session.post(url, data = data, headers = header)
      return r
    else:
      return None
  except Exception as e:
    logging.exception('[online_statistics] http request connection error %s'% e)

总结

以上就是本文关于http请求 request失败自动重新尝试代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

Python修改MP3文件的方法

本文实例讲述了Python修改MP3文件的方法。分享给大家供大家参考。具体如下: 用这个程序修改后的MP3比原来要小一些了,因为一张图片被删除了,起到了给MP3"瘦身"的作用。在一些mp...

python统计cpu利用率的方法

本文实例讲述了python统计cpu利用率的方法。分享给大家供大家参考。具体实现方法如下: #-*-coding=utf-8-*- import win32pdh import ti...

django静态文件加载的方法

在模板中往往要加载静态文件,如CSS, JavaScript,图片等。那么这些文件在django中如何才能正确加载呢? 首先要在settings文件中进行设置,关于静态文件的设置选项主要...

python getpass实现密文实例详解

python getpass实现密文实例详解

getpass模块的使用: 在python中实现密码密文需要导入getpass模块,在python中要使用内置模块的话,需要使用import进行导入,比如import getpass...

Python设计模式编程中Adapter适配器模式的使用实例

Python设计模式编程中Adapter适配器模式的使用实例

将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 应用场景:希望复用一些现存的类,但是接口又与复用环境要求不一致。 模式特点:将一个...