首页 > 其他分享 >针对某云盘接口实现分片多线程上传功能

针对某云盘接口实现分片多线程上传功能

时间:2022-11-17 17:03:25浏览次数:73  
标签:实现 云盘 分片 多线程 上传 md5

因为某云盘接口文档说不支持并发上传(也就是说服务端没有采用序号标记去合并),而且在网上搜不到该网盘类似案例,都是用的单线程,导致在设计实现过程中踩了很多坑

实现并发上传思路在这里有写https://www.cnblogs.com/1314h/p/16893032.html,该方案适合任意云盘。

首先分片上传想到的肯定是先获取文件大小->切片->获取md5值->上传至服务器,大概这么个流程,而实现方面我首次采用的是Python aiohttp异步,切换耗费小且利用率高,在测试同步上传的时候没什么问题,但是一到并发上传,文件的md5值就会和原文件不同。
后来我想明白之前忽略了一个细节,await asyncio.sleep() 等待后会调度其他事件导致上传md5值不同,当即就换成多线程实现,结果也很令人满意,上传文件md5值与原文件一致。

经过这次优化,上传效率有了质的飞跃,特别是在大文件上传时特别明显,顺便也实现了断点续传,总体令人满意。

需要源码可以私信我。

标签:实现,云盘,分片,多线程,上传,md5
From: https://www.cnblogs.com/1314h/p/16900027.html

相关文章

  • Mycat分片规则与数据分布不一致问题
    Mycat作为数据库中间件,本身并不存储数据。Mycat通过其分片规则与读写规则,实现对后端众多mysql数据库实例的分布式访问。但是,在实际使用过程中,可能会出现实际的数据分布与......
  • c++多线程thread用法小例子
    测试分布式存储系统时,针对并发测试,同时创建500个文件,采用这种方法。#include<iostream>#include<thread>usingnamespacestd;voidproc(inta){cout<<"子线......
  • Java中 多线程的创建与使用
    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,......
  • Linux网络编程 使用socket实现简单服务器——多进程&多线程版本
    1.多进程版服务端#include<stdio.h>#include<arpa/inet.h>#include<unistd.h>#include<string.h>#include<stdlib.h>#include<signal.h>#include<wait.h>#include......
  • C#多线程(二)同步基础篇
    C#多线程(二)同步基础篇 回顾上节:我们对多线程已经有了基础的认知,知道其工作原理和一些基本维护操作,并且引出了线程安全的概念。这一篇我们要讲的主题--同步,是解决线程......
  • C#多线程(三)线程高级篇
    C#多线程(三)线程高级篇 前言抛开死锁不谈,只聊性能问题,尽管锁总能粗暴的满足同步需求,但一旦存在竞争关系,意味着一定会有线程被阻塞,竞争越激烈,被阻塞的线程越多,上下文切......
  • tensorflow1.x——如何在C++多线程中调用同一个session会话tensorflow1.x
     =================================================  从前文​​tensorflow1.x——如何在python多线程中调用同一个session会话​​可以知道,使用python多线程调用同一......
  • 多线程
    程序同时执行多个任务使用线程可以把占据长时间的程序中的任务放到后台去处理。程序的运行速度可能加快一、线程实现方法  线程是CPU分配资源的基本单位。当一......
  • tensorflow1.x——如何在python多线程中调用同一个session会话
    如何在python多线程中调用同一个session会话? 这个问题源于我在看的一个强化学习代码:​​https://gitee.com/devilmaycry812839668/scalable_agent​​ 在众多的机器学习的......
  • C#多线程(一)线程基础篇
    C#多线程(一)线程基础篇 线程基础视频已经发布到B站参考文章:《ThreadinginC#》(JosephAlbahari)https://www.albahari.com/threading/《ThreadinginC#》中文翻......