gpt4 book ai didi

使用 HTTPAdapter 的 Python 请求暂停数小时

转载 作者:太空狗 更新时间:2023-10-29 20:17:57 25 4
gpt4 key购买 nike

我有一个特殊的 URL,我的代码在其中暂停了几个小时(超过 3 个小时)。我似乎无法理解为什么它会那样做。

网址是http://www.etudes.ccip.fr/maintenance_site.php .

Direct requests.get() 立即工作,但每当我有一个 HTTPAdapter 时,代码似乎几乎无限期地休眠

import requests
from requests.adapters import HTTPAdapter

url = 'http://www.etudes.ccip.fr/maintenance_site.php'
session = requests.Session()
session.mount('http://', HTTPAdapter(max_retries=2))
session.get(url, timeout=2)

最佳答案

您初始化的适配器使用以下设置重试

    if max_retries == DEFAULT_RETRIES:
self.max_retries = Retry(0, read=False)
else:
self.max_retries = Retry.from_int(max_retries)

如果你看一下初始化

def __init__(self, total=10, connect=None, read=None, redirect=None, status=None,
method_whitelist=DEFAULT_METHOD_WHITELIST, status_forcelist=None,
backoff_factor=0, raise_on_redirect=True, raise_on_status=True,
history=None, respect_retry_after_header=True):

respect_retry_after_header 的默认值为 True。在你的情况下你需要这个 False 。如果您使用 curl 检查响应

$ curl -I http://www.etudes.ccip.fr/maintenance_site.php
HTTP/1.1 503 Service Temporarily Unavailable
Date: Thu, 23 Nov 2017 14:15:49 GMT
Server: Apache
Status: 503 Service Temporarily Unavailable
Retry-After: 3600
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Cache-Control: pre-check=0, post-check=0, max-age=0
Pragma: no-cache
Connection: close
Content-Type: text/html; charset=ISO-8859-1

您希望将 respect_retry_after_header 设置为 False。这可以通过创建适配器然后修改此行为来完成

import requests
from requests.adapters import HTTPAdapter

url = 'http://www.etudes.ccip.fr/maintenance_site.php'
session = requests.Session()

adapter = HTTPAdapter(max_retries=2)
adapter.max_retries.respect_retry_after_header = False

session.mount('http://', adapter)

session.get(url, timeout=2)

关于使用 HTTPAdapter 的 Python 请求暂停数小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47397919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com