减少 Paramiko 最大请求大小

Decrease Paramiko maximal request size

我有一个 Python Runbook,我想在 Paramiko 的 sftp_file.py.[=15= 中设置 MAX_REQUEST_SIZE = 1024 而不是 32768(默认值) ]

你知道我们该怎么做吗??

我正在尝试将文件从 SFTP 传输到本地。并且由于某些原因,超过 30MB 的文件传输在达到 27-28 MB 时会自动暂停,而不会收到任何错误消息。当我在本地将 max_request_size 更改为 1024 时,它起作用了。

尝试放慢传输速度。一个非常简单的传输节流实现可以是这样的:

import time
bytes_per_second = 512*1024
start_time = time.time()

def callback(transferred, total):
    while (transferred / (time.time() - start_time)) > bytes_per_second:
        time.sleep(0.1)

sftp.get(filepath, os.path.join(localFilePath, entry.filename), callback)

或者,只需通过重新执行下载来控制请求大小:

with sftp.open(filepath, "rb") as fr, \
     open(os.path.join(localFilePath, entry.filename), "wb") as fl:
    while True:
        data = fr.read(1024)
        fl.write(data)
        if len(data) == 0:
            break

以上是 SFTPClient.get 内部工作的精简版本。