簡體   English   中英

提高請求的下載速度

[英]Increase download speed of requests

我正在寫一個從dropbox下載一些視頻的腳本。 通常我的下載速度大約是150 kb /秒,這在firefox或IDM上使用普通下載器時。 但是在使用這個Python腳本時,事情變得太慢了:不到10 kb /秒。

這是我正在使用的代碼:

def download(url,i):
    local_filename = "video_" + str(i) + ".mp4"
    # NOTE the stream=True parameter
    r = requests.get(url, stream=True)
    with open(local_filename, 'wb') as f:
        n = 0
        for chunk in r.iter_content(chunk_size=1000000): 
            if chunk: # filter out keep-alive new chunks
                n = n +1
                f.write(chunk)
                print "downloading " + str(n)
                f.flush() 
    return local_filename

無論如何我可以加快下載速度嗎?

我相信1000000mb是一次加載大的值。 當所有數據緩沖到內存中時,您無法對塊執行任何操作。 如果文件大小小於512mb,我會將大小減小到512mb或1gb,然后塊大小應該小於那個,否則你不是真正加載塊,而是整個文件......如果你搜索網絡仍然是你會發現它仍然是一個熱門話題辯論。 示例代碼:

def download(url,i):
    local_filename = "video_" + str(i) + ".mp4"
    with open(local_filename, 'wb') as f, closing(requests.get(url, stream=True)) as res:
        for n, chunk in enumerate(res.iter_content(chunk_size=512), start=1):
          f.write(chunk)
          print "downloading " + str(n)
    return local_filename

高級文檔建議在流式傳輸時將其包裝在關閉的上下文中。 它應該穩定請求。 不需要if塊來過濾掉keep keep,也不需要刷新,只需直接寫入文件流。

暫無
暫無

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

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