Max retries exceeded with url 解决方案

网友投稿 2194 2022-11-23

Max retries exceeded with url 解决方案

Max retries exceeded with url 解决方案

目录

​​问题解决方案​​​​keep alive 与close使用场景​​

问题解决方案

在上一篇问题解决中:​​python OSError: [Errno 24] Too many open files | HTTPConnectionPool(host=‘‘, port=80): Max retries e​​​ 有提到修改本地进程最大文件数来避免Max retries exceeded with url 报错,也谈到如果请求api端有请求数量限制,仍然是拉取不到结果的。这时我们就要限制我们请求的频率了。 下面有三个常见的方法: 1、增加重试连接次数: requests.DEFAULT_RETRIES = 5 2、关闭多余的链接: 默认的connection是keep-alive的,在post请求中,header中有这样一个字段:Connection,我们将其置为’close’

monitor_header = { "Content-type":"application/json", "Accept":"*/*", "Connection":"close", "X-API-Version":"v1", "projectname": "wemeet", "appname": "media_proxy", "token": "2e962d4104a2c28477ab7f38883b79bb"}

3、请求时增加缓冲延时 由于我这里是多线程进行post请求,总共有2744个线程。这里进行分批次的发请求,发完一次sleep一段时间:

def get_machine_quality(mapping): threads = [] list_machine_obj = [] now_time = time.time() for value in mapping.values(): for v in value: machine_obj = quality_data(v, 0, now_time) list_machine_obj.append(machine_obj) index = 0 for value in mapping.values(): for v in value: # 创建新线程 thread_tmp = my_thread(v, threadfunc_get_machine_quality, list_machine_obj[index]) # 添加线程到线程列表 threads.append(thread_tmp) index += 1 # 开启新线程 length = len(threads) part = 4 for i in range(0,part): start = int(i / part * length) end = int((i + 1) / part * length) for i in range(start, end): threads[i].start() for i in range(start, end): threads[i].join() time.sleep(40) print(str(start) + "to" + str(end)) logging.critical(str(start) + "to" + str(end)) # print ("退出主线程") return list_machine_obj

keep alive 与close使用场景

1、当你的Server内存充足时,KeepAlive =On还是Off对系统性能影响不大。 2、当你的Server上静态网页(Html、图片、Css、Js)居多时,建议打开KeepAlive 。 3、当你的Server多为动态请求(因为连接数据库,对文件系统访问较多),KeepAlive 关掉,会节省一定的内存,节省的内存正好可以作为文件系统的Cache(vmstat命令中cache一列),降低I/O压力。 PS:当KeepAlive =On时,KeepAliveTimeOut的设置其实也是一个问题,设置的过短,会导致Apache 频繁建立连接,给Cpu造成压力,设置的过长,系统中就会堆积无用的Http连接,消耗掉大量内存,具体设置多少,可以进行不断的调节,因你的网站浏览和服务器配置 而异。

参考:​​​解决Max retries exceeded with url的问题​​​​转:Connection: close和Connection: keep-alive有什么区别?​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:消息队列重要机制讲解以及MQ设计思路(kafka、rabbitmq、rocketmq)
下一篇:mysql 修改字段类型
相关文章

 发表评论

暂时没有评论,来抢沙发吧~