分享一下批量上传视频文件到Shotgun Version时的小技巧
一直以来,由于shotgun服务器在国外,访问慢的原因,访问/读写/上传到shotgun云数据,与它“斗智斗勇”。
最近遇到一个批量上传视频文件,如果只是普通的调用shotgun api倒没有啥问题,直接sg_uploaded_movie 就好了,但是如果出错了呢? 几百个文件卡在哪里, 哪些上传完成了,哪些没有完成,要手工来挑选,第二次,第三次呢, 将是个烦琐的工作。
这时首先用的技术是多线程了,把这些文件批量送出去,交给api来执行,减少界面的卡顿, 这个不具体展开。
第二点, 要是出错了怎么办, 总不能自己调用自己来死循环吧, 万一是网络的问题将一直执行下去卡死。 这时充分用到了try except,错误时多发几次消息,虽然也有机率的问题但是足够让视频上传上去了,上代码:
try:result = sg.create('Version', data)if result is not None: versionid = result["id"] sg.upload("Version", versionid, version_path, field_name="sg_uploaded_movie") except Exception as e:try:sg.upload("Version", versionid, version_path, field_name="sg_uploaded_movie") #再传一次试试 except Exception as e:try:sg.upload("Version", versionid, version_path, field_name="sg_uploaded_movie") #第三次试 except Exception as e: errorTxt = u"upload %s 失败,请重试!" % version_pathprint(errorTxt)print(e) else:print(u"upload %s 成功!"% version_path)
这之前从没有这么用过, 有点搞笑对吧? 也算是笨办法, 只要能解决问题就好。
以下是宽带使用情况, 多线程+出错重复提交, 上行全跑满:
赞 (0)