本文共 1115 字,大约阅读时间需要 3 分钟。
对python3下的requests使用并不是很熟练,今天稍微用了下,请求几次下来后发现出现连接超时的异常,上网查了下,找到了一个还算中肯的解决方法。
retrying是python的一个自带的重试包
导入方式:
from retrying import retry
retrying 这个包的用法原理就是在你不知道那段代码块是否会发生异常,若发生异常,可以再次执行该段的代码块,如果没有发生异常,那么就继续执行往下执行代码块
以前你的代码可能是这样写的:
def get_html(url): passdef log_error(url): passurl = ""try: get_page(url)except: log_error(url)
也有可能是这样子写的:
# 请求超过十次就放弃attempts = 0success = Falsewhile attempts < 10 and not success: try: get_html(url) success = True except: attempts += 1 if attempts == 10: break
使用 retrying 的写法:
import randomfrom retrying import retry@retry()def do_something_unreliable(): if random.randint(0, 10) > 1: raise IOError("Broken sauce, everything is hosed!!!111one") else: return "Awesome sauce!"result = do_something_unreliable()print(result)
上面的是简单的用法,你可以试下,下面是一些可选参数的使用方式。
用来设定最大的尝试次数,超过该次数就停止重试
超过时间段,函数就不会再执行了
用随机的方式产生两次retrying之间的停留时间
更多的API可以访问python官网
————————————— 下面是广告 ————————————————
个人微信:hll643435675(备注:博客)
更多资源请访问:
欢迎光临我的小网站:
欢迎光临这个妹子的SEO优化网站:
陆续优化中,后续会开发更多更好玩的有趣的小工具
————————————— 上面是广告 ————————————————
转载地址:http://juxkf.baihongyu.com/