今天在部署一个 Python 代码的时候发现遇到了问题,主要是用 requests 这个库请求一个网页。这份代码在其他的服务器上没有问题,但是换了个服务器发现每次运行都会报错,具体错误忘了记录了,反正最后会提示“[Errno 104] Connection reset by peer”这个错误。尝试了几次之后,发现问题依然存在,又去原来的服务器尝试了一下,发现还是没有问题,这就很奇怪了,网上搜了一下,感觉是新的服务器请求太频繁被对方服务器封了,也可能是新的服务器本身 IP 就之前被拉黑过?总之解决方法比较简单,请求的不那么频繁就行了。
一、代码描述
import requests for url in urls: try: r = requests.get(url).content save_image(r) except Exception, e: print str(e)
这段代码是网上看到的,基本就是这么个意思,反正就是频繁请求一个网站。
二、解决方案
解决方法也很简单,import time
之后加上一个 time.sleep()
放慢请求速度即可。
import requests import time for url in urls: for i in range(10): try: r = requests.get(url).content except Exception, e: if i >= 9: do_some_log() else: time.sleep(0.5) else: time.sleep(0.1) break save_image(r)
参考文献:
- https://blog.csdn.net/imnisen1992/article/details/53165112
- https://segmentfault.com/a/1190000007480913
目前对我来说这个解决方案是有效的,大家如果还是不行,可以另寻他法。