关于阿里oss通过python批量上传的小坑

先说背景,我这边在业务上,通过sd生成了几张图片之后,需要上传到oss并将url返回给调用方,本来这个逻辑非常简单,但是他们觉得,好像时间不太对,说生成一张图片到返回,只要4s,怎么生成4张要15s。

对于这个情况,很快想到,是由于我是循环遍历列表,然后逐张上传的,不过我没有将图片保存本地再根据地址上传,而是直接将base64图decode之后上传了,感觉虽然节省了保存的时间,但是逐张依次上传不太妥,并且查sdk后,发现oss还有提供一个参数,可以加速传输,用了之后速度明显,15s变成10s了。

接下来研究下怎么并行上传,按照我的通用做法,就用pool.async_apply就好了,结果写起来方便,用起来各种不行,完全不行,根本不行,就是不行。我一度认为oss是不是就是内部做了处理,同一时间就是只能一个上传进程。也搜了一下,发现很多帖子就是,不知道写的是啥,总之没啥靠谱的,最后查到一个,发现他用的是threading,恍然大悟。

改成threading之后,还需要,每个进程都用一个新的对象,就可以实现并行上传了。

但是我就4张图,改并行上传之后速度并没有提升,甚至还增多,这里就是要么还是oss内部还是做了锁,实际没有并行,要么就是线程太少,抵不过开多线程的开销。

总之就是记录一下,在python也是多进程吃全套的,有的时候还是需要用多线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值