我正在将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)
如果我从浏览器中运行该过程,则它运行良好,因此似乎不是远程服务器关闭了连接,还是防火墙或关闭连接之间的东西。
答案 0 :(得分:1)
应OP的要求发布-我对原始问题的评论指出了相关的SO问题
问题的根源在于http.client.BadStatusLine
错误。
看看以下相关的SO Q & A,其中讨论了代理服务器对HTTP请求和响应的影响。