用于上载到支持resumable.js的服务器的python客户端
resumable的Python项目详细描述
resumable.py提供将文件分块上载到兼容服务器的功能, 模拟流行的resumable.jsjavascript库。
安装
resumable.py可以使用pip从PyPI安装:
$ pip install resumable
用法
使用上载目标服务器的url构造一个Resumable对象,然后 使用add_file()对要上载的文件进行排队。建议将其用作 上下文管理器:
fromresumableimportResumablewithResumable('https://example.com/upload')assession:session.add_file('my_file.dat')
您可以在一个会话中对多个要上载的文件进行排队,并且with 块在上载完成之前不会完成(或出现异常 升起)
也可以使用不带with块的Resumable会话,并且 手动join()会话:
session=Resumable('https://example.com/upload')session.add_file('my_file.dat')do_something_else()session.join()
后端
py处理在 客户端,但文件仍然需要从 服务器端,如resumable.js。有关如何设置兼容的 后端,请参阅resumable.js文档或后端示例 on GitHub。
配置
resumable.py支持resumable.js:
- target多部分post请求的目标url(必需)
- chunk_size每个上载数据块的字节大小(默认值: 1*1024*1024)
- simultaneous_uploads同时上载的次数(默认值:3)
- headers要包含在包含数据的多部分POST中的额外头 (默认值:{})
- test_chunks为每个块向服务器发出get请求,以查看它是否 已经存在。如果在服务器端实现,这将允许上载 即使在浏览器崩溃或计算机重新启动后仍会继续。(默认: True)
还提供了一些附加的低级选项—这些选项记录在 Resumable类的docstring。
回调和进度报告
py提供了将任意函数注册为回调的能力。 对某些事件的反应。这些是:
在Resumable对象上:
- file_added在添加文件时触发,使用file对象
- file_completed在文件完成时触发,文件对象为
- chunk_completed在一个块完成时触发,文件和 块对象
关于ResumableFile(由Resumable.add_file()返回):
- completed文件完成时触发,无参数
- chunk_completed当一个块完成时触发,该块 对象
每个回调分派器都有一个register()方法,您可以使用它 注册回调。例如,打印一个简单的进度消息 以块的形式上载更新:
withResumable('https://example.com/upload')assession:file=session.add_file('my_file.dat')defprint_progress(chunk):template='\rPercent complete: {:.1%}'print(template.format(file.fraction_completed),end='')file.chunk_completed.register(print_progress)print()# new line
贡献
py的设计由resumable.js通知,但是只有一个核心子集 的功能尚未实现。实现resumable.js的补丁程序 欢迎使用特性,贡献者应该尝试保持一致性 使用resumable.js接口,将javascript样式和习惯用法映射到python 适当的等价物(例如simultaneousUploads 配置参数在python中变成simultaneous_uploads。