簡體   English   中英

重復使用HTTP連接Python 3

[英]Re-use http connection Python 3

因此,每秒我都會每秒對網站X發出一堆請求,到目前為止,使用標准urllib包(例如,請求返回一個json):

import urllib.request
import threading, time

def makerequests():
    request = urllib.request.Request('http://www.X.com/Y')
    while True:
        time.sleep(0.2)
        response = urllib.request.urlopen(request)
        data = json.loads(response.read().decode('utf-8'))

for i in range(4):
    t = threading.Thread(target=makerequests)
    t.start()

但是,由於在發出約500個請求后,我發出了太多請求,因此該網站返回HTTPError 429: Too manyrequests 我當時認為如果重新使用初始TCP連接可能會有所幫助,但是我注意到urllib包無法做到這一點。

因此,我進行了一次谷歌搜索,發現以下軟件包可能會有所幫助:

  • Requests
  • http.client
  • socket

所以我有一個問題:哪一個最適合我的情況,有人可以舉一個例子說明(對於Python 3)嗎?

如果使用會話, requests句柄自動保持活動狀態 如果服務器限制請求的速度,這實際上可能對您沒有幫助,但是, requests也處理解析JSON,因此這是使用它的一個很好的理由。 這是一個例子:

import requests

s = requests.Session()
while True:
    time.sleep(0.2)
    response = s.get('http://www.X.com/y')
    data = response.json()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM