减少Paramiko最大请求大小

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

您对我们如何做到有任何想法吗?

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

iCMS 回答:减少Paramiko最大请求大小

请尝试减慢传输速度。传输限制的一个非常简单的实现可以是:

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,"wb") as fl:
    while True:
        data = fr.read(1024)
        fl.write(data)
        if len(data) == 0:
            break

上面是SFTPClient.get内部所做的精简版本。

本文链接:https://www.f2er.com/2224462.html

大家都在问