【发布时间】:2020-04-07 20:04:32
【问题描述】:
我想获取 URL 的内容,如果遇到 50X HTTP 错误代码,请重试 10 次,重试之间有 0.5 秒的延迟。我还希望我的请求有 1 秒的超时时间。为了实现这个目标,我尝试了以下程序:
#!/usr/bin/python3
import sys
import requests
from urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter
URL = "http://<DOMAIN>/Loader.aspx?ParTree=15131H&i=" # + stockid
def get_data(stockid):
print("1")
req_session = requests.Session()
print("2")
retries = Retry(total = 10,
backoff_factor = 0.5,
status_forcelist = [500, 502, 503, 504])
print("3")
req_session.mount("http://", HTTPAdapter(max_retries=retries))
print("4")
page_content = req_session.get(URL + stockid, timeout=1).content
print("5")
get_data(sys.argv[1])
不幸的是,它在屏幕上打印 4 后冻结了几分钟。怎么了?
【问题讨论】:
-
如何调用您的代码?这意味着:
sys.argv[1]是什么? -
id没有使用,所以不需要... -
@Manuel 抱歉打错了。我编辑了这个问题。谢谢。
-
它适用于可访问的 url。请给我们完整的链接
-
@InfinityTM 由于 Web 服务器的行为不是确定性的,因此添加此类信息并没有多大帮助。可访问的 URL 没有问题,如果网络服务器未在预期时间内响应,则会出现此问题。
标签: python-3.x python-requests urllib3