亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

python curl命令如何進行斷點續傳

小樊
81
2024-11-28 22:33:24
欄目: 編程語言

在Python中,要實現類似于curl命令的斷點續傳功能,可以使用requests庫結合requests_toolbelt中的Retry模塊。以下是一個示例代碼:

import requests
from requests_toolbelt.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

url = "https://example.com/largefile.zip"
local_filename = "largefile.zip"
chunk_size = 1024 * 1024  # 1MB

# 設置重試策略
retry_strategy = Retry(
    total=3,  # 總共重試的次數
    status_forcelist=[429, 500, 502, 503, 504],  # 針對這些狀態碼進行重試
    allowed_methods=["HEAD", "GET"],  # 只允許HEAD和GET請求
    backoff_factor=1  # 重試間隔的因子
)

# 創建一個HTTP適配器并應用重試策略
adapter = HTTPAdapter(max_retries=retry_strategy)

# 使用Session對象來發送帶有重試策略的請求
with requests.Session() as session:
    session.mount("https://", adapter)
    session.mount("http://", adapter)

    # 打開本地文件并設置寫入模式
    with open(local_filename, "ab") as file:
        # 發送HEAD請求以獲取文件大小
        response = session.head(url)
        file_size = int(response.headers["Content-Length"])

        # 初始化文件指針位置
        file.seek(0, os.SEEK_END)

        # 發送GET請求以分塊下載文件
        for start in range(0, file_size, chunk_size):
            end = min(start + chunk_size - 1, file_size - 1)
            headers = {"Range": f"bytes={start}-{end}"}
            response = session.get(url, headers=headers, stream=True)

            # 檢查響應狀態碼是否為206(Partial Content)
            if response.status_code == 206:
                # 將數據寫入本地文件
                for chunk in response.iter_content(chunk_size=chunk_size):
                    if chunk:
                        file.write(chunk)
            else:
                print(f"Download failed with status code {response.status_code}")
                break

在這個示例中,我們首先使用HEAD請求獲取文件的大小,然后使用GET請求分塊下載文件。通過設置Range頭,我們可以請求文件的特定部分,從而實現斷點續傳。我們還設置了重試策略,以便在網絡不穩定時自動重試下載。

0
武宁县| 鄂伦春自治旗| 宜宾市| 永康市| 周宁县| 宁陵县| 湘乡市| 合肥市| 松阳县| 神池县| 刚察县| 黄梅县| 陵川县| 越西县| 新沂市| 仲巴县| 射阳县| 顺昌县| 融水| 芜湖县| 鹤壁市| 甘孜县| 东乡| 庄河市| 福清市| 鹤峰县| 建平县| 会同县| 罗定市| 名山县| 仁化县| 阳高县| 博湖县| 高台县| 张家界市| 兴业县| 定远县| 右玉县| 青川县| 资阳市| 互助|