Python 3.6 请求时间太长

9 浏览
0 Comments

Python 3.6 请求时间太长

我试图使用requests来从NPI API中获取信息,但平均需要超过20秒才能获取到信息。如果我尝试通过Web浏览器访问,只需要不到一秒钟的时间。我对这方面还比较新手,非常感谢任何帮助。这是我的代码:\n

import json
import sys
import requests
url = "https://npiregistry.cms.hhs.gov/api/?number=&enumeration_type=&taxonomy_description=&first_name=&last_name=&organization_name=&address_purpose=&city=&state=&postal_code=10017&country_code=&limit=&skip="
htmlfile=requests.get(url)
data = htmlfile.json()
for i in data["results"]:
    print(i) 

0
0 Comments

Python 3.6中的请求太长

这可能是由于响应格式不正确,或者由于requests花费的时间超过了必要的时间来设置请求。为了解决这些问题,继续阅读:

服务器响应格式不正确

可能的问题是响应解析实际上是有问题的。您可以通过不读取从服务器接收到的响应来检查此问题。如果代码仍然很慢,那么这不是您的问题,但如果问题得到解决,那么问题可能在于解析响应。

  1. 如果某些标头设置不正确,这可能会导致解析错误,从而阻止分块传输(来源)。
  2. 在其他情况下,手动设置编码可能会解决解析问题(来源)。

要解决这些问题,请尝试:

r = requests.get(url)
r.raw.chunked = True # 修复问题1
r.encoding = 'utf-8' # 修复问题2
print(response.text)

设置请求时间过长

这主要适用于连续发送多个请求的情况。为了防止requests每次都要设置连接,您可以利用requests.Session。这确保与服务器的连接保持打开和配置,并且还作为一个很好的功能持久化cookie。尝试这样做(来源):

import requests
session = requests.Session()
for _ in range(10):
    session.get(url)

无法解决您的问题?

如果这些方法不能解决您的问题,我收集了一些其他可能的解决方案这里

0