tornado.simple_httpclient.HTTPTimeoutError: Timeout while connecting问题的解决
问题:发送大量并发的时候,request_timeout和connect_timeout时间一到,默认的时长:20S, 不管还有多少没有请求,剩下都会抛异常HTTPTimeoutError【Timeout in request queue】 解决方法如下: 步骤1、AsyncHTTPClient.__new__() 步骤2、Configurable.__new__() ==> 所以传入的参数存放在init_kwargs 步骤3、instance.initialize(*args, **init_kwargs) <=等价=> SimpleAsyncHTTPClient().initialize(*args, **init_kwargs) 步骤4、SimpleAsyncHTTPClient().fetch_impl() 【主要问题点在这里,重点查看该代码】
一、分析源码
二、解决方案
# 加大并发数量 http_client = AsyncHTTPClient(max_clients=500) request_timeout和connect_timeout设置为0 HTTPRequest( url=url, method='POST', body=urlencode(post_body).encode('utf-8'), validate_cert=False, request_timeout=0, connect_timeout=0, headers=self.header, user_agent='nginx', )
三、问题解决