尽管设置了超时,Python仍请求发布超时

时间:2018-09-10 02:11:15

标签: python python-3.x python-requests

我正在将Python Requests模块(2.19.1版)与Python 3.4.3结合使用,在远程服务器上调用一个函数,该函数生成一个.csv文件供下载。通常,它运行良好。有一个特定文件需要花费超过6分钟的时间才能完成,无论我将timeout参数设置为什么,在尝试生成该文件5分钟后我都会收到错误消息。

import requests
s = requests.Session()
authPayload = {'UserName': 'myloginname','Password': 'password'}
loginURL = 'https://myremoteserver.com/login/authenticate'
login = s.post(loginURL, data=authPayload)
backupURL = 'https://myremoteserver.com/directory/jsp/Backup.jsp'
payload = {'command': fileCommand}
headers = {'Connection': 'keep-alive'}
post = s.post(backupURL, data=payload, headers=headers, timeout=None)

此错误恰好在5分钟后超时:

  

文件send中的文件“ /usr/lib/python3/dist-packages/requests/adapters.py”,第330行       timeout =超时

     

URLopen中的文件“ /usr/lib/python3/dist-packages/urllib3/connectionpool.py”,第612行       引发MaxRetryError(self,url,e)

     

urllib3.exceptions.MaxRetryError:> HTTPSConnectionPool(host ='myremoteserver.com',port = 443):URL超过最大重试次数:/directory/jsp/Backup.jsp(由<类'http.client.BadStatusLine引起'>:'')

如果我将超时设置为小得多(例如5秒),则会收到一个非常合理的错误:

  

urllib3.exceptions.ReadTimeoutError:   HTTPSConnectionPool(host ='myremoteserver.com',port = 443):读取   时间到。 (读取超时= 5)

如果我从浏览器中运行该过程,则它运行良好,因此似乎不是远程服务器关闭了连接,还是防火墙或关闭连接之间的东西。

1 个答案:

答案 0 :(得分:1)

应OP的要求发布-我对原始问题的评论指出了相关的SO问题

问题的根源在于http.client.BadStatusLine错误。

看看以下相关的SO Q & A,其中讨论了代理服务器对HTTP请求和响应的影响。