django/django存储线程s3块上载程序

s3chunkuploader的Python项目详细描述


一个django文件处理程序,用于管理直接上传到s3的管道文件,而无需通过服务器的文件系统。 上载程序使用多个线程来加速更大文件的上载。 此包依赖于django和django存储,允许使用s3 storages文件字段,但会更改 上载行为以绕过本地文件系统。

快速启动

  1. 安装软件包:

    pip install s3chunkuploader

  2. 设置django文件上载处理程序设置:

    FILE_UPLOAD_HANDLERS = (‘s3chunkuploader.file_handler.S3FileUploadHandler’,)

工作原理

文件处理程序在门口截获文件上载多部分请求,并从 浏览器中,它们被收集到自定义threadpoolworker中的内部队列中。当队列超过可配置的 大小(默认为5MB,这是S3多部分上传的最小部分大小),它被提交到线程池 作为一个未来,这将解决。一旦所有的块被上传,所有的未来都被解决,上传就完成了。 默认情况下,使用10个线程,这意味着100MB文件上传可能作为205MB部分发送到S3。

filehandler最终返回一个'dummy'django storages s3boto3storagefile,该文件与存储兼容 S3文件字段,但实际上并不用于上载完整文件。该文件还增强了两个附加属性:

original_name: The original file name uploaded file_size: The actual full file size uploaded

建议在上载文件视图中绕过csrf检查,因为csrf检查将在 使用处理程序。 fields.py中提供了替换文件字段s3 file field,并对s3对象键感到满意

设置

Django应用程序中需要以下设置(仅需要2个)

SettingDescription
AWS_ACCESS_KEY_IDRequired. Your AWS access key
AWS_SECRET_ACCESS_KEYRequired. The AWS secret
AWS_REGIONOptional. Region of S3 bucket
S3_DOCUMENT_ROOT_DIRECTORYOptional. Document root for all uploads (prefix)
S3_APPEND_DATETIME_ON_UPLOADOptional [True]. Appent the current datetime sring to the uploaded file name
S3_PREFIX_QUERY_PARAM_NAMEOptional [__prefix]. A query param key name which provides additional prefix for the object key on S3
S3_MIN_PART_SIZEOptional [5MB]. The part size in bytes to upload to S3
MAX_UPLOAD_SIZEOptional [None]. The maximum file size in bytes for an individual file.
S3_ENDPOINT_URLOptional [None]. The s3 endpoint url which overrides the default

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

推荐PyPI第三方库


热门话题
java如何避免springbootstarterparent和dependency中的flyway包冲突   java文本文件写入不起作用   java获取名为DAO类的Bean创建异常   java类路径和清单文件   如何使用Java中的模式来获取像C中的“sscanf”这样的组?   java Spring自动连接具有构造函数的类   clientSecurity运行的java geode示例失败   java JavaFX:在FXML中从ResourceBundle访问非string对象   java登录到google firebase   java对象在通过构造函数后不会更改。为什么?   java(Android)对特定页面的操作webView   javascript如何在webview的js中从java调用变量   持久化—一种在Java中存储和检索对象而不使用关系数据库的简单方法?   java Ldap获取通讯组列表中的用户   java检查温度条件   java后退按钮警报框(Android Studio)   数组java列表问题:为什么我运行它时,它会在第三次打印时打印出4?   java相对路径与绝对路径