Python urllib3 urlopen不使用具有特定错误的重试

时间:2014-06-17 08:28:16

标签: python urllib3

为什么来自urlopen的{​​{1}}在点击urllib3时没有重试?我错过了什么吗?我可以通过使用自己的重试代码解决这个问题,但我更喜欢使用模块中的那个。

我甚至试图明确地将ReadTimeoutError作为retries=3的论据,但它没有帮助......

这是我的代码:

HTTPSConnectionPool.request()

谢谢!

编辑:

现在,带有一些调试信息的响应(这是来自openERP的日志):

conn = urllib3.HTTPConnectionPool(host, port=port)
return conn.request(method, api_url, data, retries=3, 
                    timeout=urllib3.Timeout(connect=2, read=3))

如您所见,2014-06-18 08:36:42,791 5585 DEBUG test openerp.addons.myaddon.xml_request.xml_request: args prepared 2014-06-18 08:36:42,791 DEBUG Added an stderr logging handler to logger: urllib3 2014-06-18 08:36:42,791 5585 DEBUG test urllib3: Added an stderr logging handler to logger: urllib3 2014-06-18 08:36:42,792 INFO Starting new HTTPS connection (1): some.host.com 2014-06-18 08:36:42,792 5585 INFO test urllib3.connectionpool: Starting new HTTPS connection (1): some.host.com 2014-06-18 08:36:43,699 DEBUG Setting read timeout to 10 2014-06-18 08:36:43,699 5585 DEBUG test urllib3.connectionpool: Setting read timeout to 10 2014-06-18 08:36:53,722 5585 ERROR test openerp.osv.osv: Uncaught exception Traceback (most recent call last): File "/home/openerp/server/openerp/osv/osv.py", line 132, in wrapper return f(self, dbname, *args, **kwargs) File "/home/openerp/server/openerp/osv/osv.py", line 199, in execute res = self.execute_cr(cr, uid, obj, method, *args, **kw) File "/home/openerp/server/openerp/osv/osv.py", line 187, in execute_cr return getattr(object, method)(cr, uid, *args, **kw) File "/home/openerp/custom_addons/myaddon/xml_request/xml_request.py", line 260, in button_test self.request(cr, uid, ids[0], data, context=context) File "/home/openerp/custom_addons/myaddon/xml_request/xml_request.py", line 234, in request config_rec.xml_port, 'POST', api_url, vals) File "/home/openerp/custom_addons/myaddon/xml_request/xml_request.py", line 208, in connAndReq timeout=urllib3.Timeout(connect=5, read=10)) File "/usr/lib/python2.7/dist-packages/urllib3/request.py", line 79, in request **urlopen_kw) File "/usr/lib/python2.7/dist-packages/urllib3/request.py", line 142, in request_encode_body **urlopen_kw) File "/usr/lib/python2.7/dist-packages/urllib3/connectionpool.py", line 574, in urlopen raise ReadTimeoutError(self, url, "Read timed out.") ReadTimeoutError: HTTPSConnectionPool(host=u'some.host.com', port=443): Read timed out. 在到期时间之后被抛出,没有重试。

1 个答案:

答案 0 :(得分:3)

看起来这是urllib3 v1.8.2中的一个错误。

它应该是fixed here,可在master分支中找到。

即将推出新版本。抱歉给你带来不便。 :)