import requests
requests.get("https://www.example.com/")
import requests
import logging
import http.client
http.client.HTTPConnection.debuglevel = 1
# You must initialize logging, otherwise you'll not see debug output.
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True
requests.get("https://www.example.com")
requests.head("https://www.example.com")
requests.get("https://www.example.com", stream=True)
import requests
session = requests.Session()
for _ in range(10):
session.get("https://www.example.com")
from concurrent.futures import as_completed
from requests_futures.sessions import FuturesSession
with FuturesSession() as session:
futures = [session.get("https://www.example.com") for _ in range(10)]
for future in as_completed(futures):
response = future.result()
requests.get("https://www.google.com")
服务器可能专门阻止请求
,或者它们可能使用白名单,或者其他原因。要发送更好的用户代理字符串,请尝试以下方法(源代码):
headers = {"User-Agent": "Mozilla/5.0 (X11; CrOS x86_64 12871.102.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36"}
requests.get("https://www.example.com", headers=headers)
如果这个问题只是有时发生,例如,在几个请求之后,服务器可能会限制您的速率。检查响应,看看它是否读到了这些内容(例如,“达到速率限制”、“超过工作队列深度”或类似的内容;源)。
这里,解决方案只是在请求之间等待更长时间,例如使用time.sleep()
。
您可以通过不读取从服务器接收的响应来检查这一点。如果代码仍然很慢,这不是您的问题,但如果解决了这个问题,问题可能在于解析响应。
要解决这些问题,请尝试:
r = requests.get("https://www.example.com")
r.raw.chunked = True # Fix issue 1
r.encoding = 'utf-8' # Fix issue 2
print(response.text)
这可能是所有发现的最糟糕的问题。检查这一点的一个简单但有点奇怪的方法是添加timeout
参数,如下所示:
requests.get("https://www.example.com/", timeout=5)
如果返回一个成功的响应,问题应该出在IPv6上。原因是请求
首先尝试IPv6连接。当超时时,它尝试通过IPv4连接。通过将超时设置为低,您可以强制它在更短的时间内切换到IPv4。
通过使用例如wget
或curl
进行验证:
wget --inet6-only https://www.example.com -O - > /dev/null
# or
curl --ipv6 -v https://www.example.com
在这两种情况下,我们都强制该工具通过IPv6连接以隔离问题。如果超时,请重试强制IPv4:
wget --inet4-only https://www.example.com -O - > /dev/null
# or
curl --ipv4 -v https://www.example.com
如果这个工作正常,你已经发现了你的问题!但是怎么解决呢,你问?
问题内容: 当使用请求库请求Web资源或网站或Web服务时,请求需要很长时间才能完成。该代码类似于以下内容: 此请求需要2分钟(恰好是2分钟10秒)才能完成!为什么这么慢,我该如何解决? 问题答案: 这个问题可以有多种可能的解决方案。关于StackOverflow的答案很多,因此,我将尝试将它们全部组合起来,以免您寻找它们的麻烦。 在搜索中,我发现了以下几层: 对于许多问题,激活日志记录可以帮助您
2013/04/22 12:35:56[错误]2709#0:*1从上游读取响应标头时上游超时(110:连接超时),客户端:xx.xx.xx.xx,服务器:,请求:“get/entity/datasenders/http/1.1”,上游:“uwsgi://127.0.0.1:9001”,主机:“xxx.xx.xx.x” 我已经设置了标题超时和uWSGI发送/读取超时5分钟,有人能告诉我我可以做什么来
问题内容: 在Bash中,可以通过追加在后台执行命令。如何在Python中完成? 问题答案: 我用。我在模块级别创建一个单例线程池,然后用于启动任务。 该命令给了我一个未来,我可以将它无限期地与其他未来添加到列表中,直到我想收集全部或部分结果为止。 出于所有逻辑和理由,是一个THREAD池而不是一个进程池。 示例(只要安装了请求,就可以在Python 2和3中使用): 这些请求将同时执行,因此运行
通常用于HTTP/HTTPS请求失败/成功等处理. 进程: 主进程 IncomingMessage是由 EventEmitter响应可读流接口 实例事件 事件: 'data' 用途:响应或回调传送到应用的数据 chunk Buffer - 响应正文的数据块. 事件: 'end' 触发:响应正文已结束时 事件: 'aborted' 触发:正在进行的HTTP事务期间请求已取消时 事件: 'error
我使用javamail通过IMAP协议从exchage帐户读取邮件。这些邮件是纯格式的,内容是XML。 几乎所有这些邮件的大小都很短(通常小于100Kb)。然而,有时我不得不处理大型邮件(大约10Mb-15Mb)。例如,昨天我收到一封13Mb大小的电子邮件。仅仅读它就花了50多分钟。这正常吗?有没有办法提高它的性能?代码是: 花费如此长时间的方法是。我做错了什么?有什么提示吗? 非常感谢,我的英语
我正在处理一个项目,我必须调用第三方REST服务。当前设置的问题在于服务在至少 秒内未返回。此响应时间可能超过此值。 为了避免线程在服务器上等待,我的服务的超时值为16秒。但这种价值并没有帮助。我对此进行了搜索,发现断路器模式很有用。参考:-spring boot rest api请求超时。我相信当服务有几次慢响应时,这种模式很有用。在我的情况下,它总是一个缓慢的服务。 我该如何处理这种情况?
问题内容: 找出特定请求花费了多长时间的好方法是什么? 我想获取此信息,然后将其显示在页面上的某处。 回答??:::: 我是javascript新手,如果您不想内联“ success”函数(因为它将是一个更大的函数),这是我能想到的最好的方法(这是执行此操作的好方法)吗?我觉得我已经把事情复杂化了…: 问题答案: @codemeit是正确的。他的解决方案如下所示,将jQuery用于ajax请求。这
问题内容: 我正在使用Google BigQuery,并且正在从PHP执行一些简单的查询。(例如,从电子邮件中的SELECT * WHERE email='mail@test.com‘)我只是在检查表中是否存在该电子邮件。 表“电子邮件”目前为空。但是,PHP脚本仍然需要大约4分钟的时间来检查一个空表上的175封电子邮件。.如我希望将来该表将被填充,并且将有500 000封邮件,那么我想请求时间会