我有一个Python Runbook,我想在Paramiko的MAX_REQUEST_SIZE = 1024
中设置32768
而不是sftp_file.py
(默认值)。
您对我们如何做到有任何想法吗?
我正在尝试将文件从SFTP传输到本地。并且由于某些原因,当达到27-28 MB时,超过30MB的文件传输会自动暂停,而不会出现任何错误消息。当我在本地将max_request_size
更改为1024
时,它起作用了。
我有一个Python Runbook,我想在Paramiko的MAX_REQUEST_SIZE = 1024
中设置32768
而不是sftp_file.py
(默认值)。
您对我们如何做到有任何想法吗?
我正在尝试将文件从SFTP传输到本地。并且由于某些原因,当达到27-28 MB时,超过30MB的文件传输会自动暂停,而不会出现任何错误消息。当我在本地将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,"wb") as fl:
while True:
data = fr.read(1024)
fl.write(data)
if len(data) == 0:
break
上面是SFTPClient.get
内部所做的精简版本。