Python 3.6请求太长

时间:2017-10-10 23:03:28

标签: python http python-requests python-3.6

我正在尝试使用请求从NPI API中提取信息,但它平均需要超过20秒才能获取信息。如果我尝试通过我的网络浏览器访问它,它只需不到一秒钟。我对此很新,任何帮助都将不胜感激。这是我的代码。

purrr (tidyverse)

1 个答案:

答案 0 :(得分:0)

这可能是由于响应的格式不正确,或者是由于requests花费了比设置请求所需的时间更长的时间。要解决这些问题,请继续阅读:

服务器响应格式错误

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

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

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

r = requests.get(url)
r.raw.chunked = True # Fix issue 1
r.encoding = 'utf-8' # Fix issue 2
print(response.text)

设置请求需要很长时间

这主要适用于连续发送多个请求的情况。为避免每次requests都必须建立连接,可以使用requests.Session。这样可以确保与服务器的连接保持打开和配置状态,并且还保留cookie,这是一个不错的好处。试试这个(source):

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

不能解决您的问题吗?

如果那不能解决您的问题,我还收集了其他一些可能的解决方案here