paramiko中putof文件上传问题优化

paramiko模块大文件上传

1. 遇到paramiko大文件上传后端速度瓶颈

    def put_file_by_fl(self, fl, remote_path, file_size=None,callback=None):
        with self as cli:
            sftp=cli.open_sftp()
            print('kkkkkkk')
            SFTPClient_large.putfo_large(sftp,fl, remote_path, file_size=file_size,callback=callback)
            # sftp.putfo_large(fl, remote_path, file_size=file_size,callback=callback)

2. 修改写入速度,只有32kb,自己加入大文件判断的逻辑

			size = 0
            while True:
                if file_size >= 104857600:
                    print("开始写入。。。。。。")
                    # data=reader.read(20971520)
                    data = fl.read(10485760)
                    print(f"这是大文件{file_size}")
                else:
                    print("这不是大文件!")
                    data = fl.read(32768)
                fr.write(data)
                size += len(data)
                if len(data) == 0:
                    break
                if callback is not None:
                    callback(size, file_size)

这里修改上传速度为10MB,还是有点慢,估计跟python异步io性能这块也有关系吧。

3.还有一个问题,需要前端修改发送请求时timeout值,当然越大越好

handleUpload = () => {
    this.input.click();
    this.input.onchange = e => {
      this.setState({uploading: true, uploadStatus: 'active', percent: 0});
      const file = e.target['files'][0];
      const formData = new FormData();
      const token = uniqueId();
      this._updatePercent(token);
      formData.append('file', file);
      formData.append('id', this.id);
      formData.append('token', token);
      formData.append('path', '/' + this.state.pwd.join('/'));
      this.input.value = '';
      http.post('/api/file/object/', formData, {timeout: 60000000})
        .then(() => {
          this.setState({uploadStatus: 'success'});
          this.fetchFiles()
        }, () => this.setState({uploadStatus: 'exception'}))
        .finally(() => setTimeout(() => this.setState({uploading: false}), 2000))
    }
  };

2.然后需要用到nginx的话,在nginx配置如下,因为可能会报错504 time_out

fastcgi_connect_timeout 1200s;#原设置为300s
fastcgi_send_timeout 1200s;#原设置为300s
fastcgi_read_timeout 1200s;#原设置为300s
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;

好睡眠来自有exit0
你们觉得呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值