作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个特殊的 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/
使用 HTTPAdapter 进行异步编程并调用方法的正确方法是什么?所有这些请求都是向同一个域发出的。 我正在使用 eventlet 在 Celery 中进行一些异步编程,并测试我的一个站点上的负载
我有一个特殊的 URL,我的代码在其中暂停了几个小时(超过 3 个小时)。我似乎无法理解为什么它会那样做。 网址是http://www.etudes.ccip.fr/maintenance_site.
我最近将我的 pip 升级到了 19.3。当我这样做时,我无法使用任何 pip 命令。操作系统 - Mac 当我用谷歌搜索并进行更多研究时,大多数建议都是降级 pip 包。然而,即使我尝试了,我也得到
我是一名优秀的程序员,十分优秀!