問題:發送大量並發的時候,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', )
三、問題解決