我用 while try 循环修复了它,等待响应以设置变量以便退出循环。
当连接出现异常时,它会等待五秒钟,并继续寻找连接的响应。
我的修复前的代码,包括失败的响应HTTPSConnectionPool(host='etc.com', port=443): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x000001E9955A2050>, 'Connection to example.net timed out. (connect timeout=None)'))
from __future__ import print_function
import sys
import requests
def condition_questions(**kwargs):
proxies = {'https': 'example.com', 'http': 'example.com:3128'}
print(kwargs, file=sys.stdout)
headers = {'etc':'etc',}
body = f'''<etc>
</etc>'''
try:
response_xml = requests.post('https://example.com', data=body, headers=headers, proxies=proxies)
except Exception as ex:
print("exception", ex, file=sys.stdout)
log.exception(ex)
finally:
print("response_xml", response_xml, file=sys.stdout)
return response_xml
修复后,成功响应为
response_xml <Response [200]>
:
import time
...
response_xml = ''
while response_xml == '':
try:
response_xml = requests.post('https://example.com', data=body, headers=headers, proxies=proxies)
break
except Exception as ex:
print("exception", ex, file=sys.stdout)
log.exception(ex)
time.sleep(5)
continue
finally:
print("response_xml", response_xml, file=sys.stdout)
return response_xml
基于Jatin在这里的回答 --“只需这样做,
import time
page = ''
while page == '':
try:
page = requests.get(url)
break
except:
print("Connection refused by the server..")
print("Let me sleep for 5 seconds")
print("ZZzzzz...")
time.sleep(5)
print("Was a nice sleep, now let me continue...")
continue
不用谢 :)"