python – ConnectionError,超出url的最大重试次数,(由None引起)
什么意思说:
requests.exceptions.ConnectionError: None: Max retries exceeded with url: /myurl (Caused by None) 具体来说,“由无引起”是什么意思? 我有一个python客户端和一个在同一台机器上运行的简单clojure服务器.服务器运行在具有4个线程的compojure http-kit上.客户端使用带有3个工作进程的multiprocessing.Pool,使用3到4个进程连续提交POST请求. 每隔一段时间,客户端就会因上述ConnectionError而死亡.我在客户端进行了设置重试次数= 3,并将服务器上的队列大小增加到1000000而没有任何效果. 任何帮助,将不胜感激. 编辑:更正,我实际上发送POST请求而不是GET. 实际的脚本太大了,不能在这里发布,但基本上就像这样.我有一个函数,用一些数据调用post: def post_func(my_data,config): return requests.post(my_url,data=json.dumps({"data": my_data,"config": config})) 包装multiprocessing.Pool的类: class Executor(object): def __init__(self,nprocs): self.pool = Pool(processes=nprocs) def execute(self,func,list_of_data): return self.pool.map(func,list_of_data) 另一个使用不同配置调用Executor.execute()的函数: function eval(executor,list_of_data,config): start = timer() func = partial(post_func,config=config) results = executor.execute(func,list_of_data) taken = timer()-start return results 所有eval()调用都会重用一个Executor.然后将eval()包含在评分函数中并赋予pyswarm以进行优化: pso(score_func,lbs,ubs,swarmsize=20,maxiter=20,debug=True) 编辑:我之前可能应该做的事情,但正确捕获ConnectionError会给我这样的: ConnectionError: HTTPConnectionPool(host='127.0.0.1',port=5000): Max retries exceeded with url: /my_url (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f0ccb4b5550>: Failed to establish a new connection: [Errno 99] Cannot assign requested address',)) 我现在重写了脚本以重用单个的request.Session,如果能解决这个问题很快就会知道. 解决方法
重用单个请求会话为我解决了问题.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |