用于上载到支持resumable.js的服务器的python客户端

resumable的Python项目详细描述


https://travis-ci.org/acroz/resumable.py.svg?branch=masterhttps://coveralls.io/repos/github/acroz/resumable.py/badge.svg?branch=master

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从ImageIO中排除特定的TIFF读取器?   JavaJMockit和passbyreference。我们中一定有一个人错了(可能是我!)   java Android camera2放弃了牛轧糖的表面,但在棉花糖上工作   java按字符串中出现的顺序对字符数组进行排序   如何获取Groovy生成的java源代码   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java为什么我的冒泡排序代码会打印出这些奇怪的东西?   java JAXB:typesafeEnumMemberName=“generateName”是否可自定义?   Java编程输入:今天是星期天输出:星期天是今天   java不理解首个OOAD书的吉他示例   java如何从JformattedTextfield检索货币格式值   java可以从相同的源代码生成功能不同的可执行文件吗?