使用元数据管理图像和其他文件的存储。还提供了一个在金字塔上完成的http api。
keepluggable的Python项目详细描述
范围
keepluggable是开源的, (MIT licensed), 高度可配置的python库管理图像和 其他带有元数据的文档(任何类型的文件,真的)。
文档位于http://docs.nando.audio/keepluggable/latest/
文件元数据可以存储在与文件负载不同的位置。 这是推荐的,因为许多操作,例如列出文件, 不要涉及实际的文件内容,所以应该避免加载它。 此外,有效负载应该针对服务和元数据进行优化 优化查询。
对于文件有效负载,我们目前已经实现了一个存储 亚马逊S3。还有一个非常简单的后端存储 本地文件系统中的文件(在开发过程中很有用)。
为了(可选地)存储元数据,我们目前提供了一个基本的sqlalchemy 后端为您子类化。
在这两种情况下,您都可以轻松地编写其他存储后端。
使用此库,您可以更轻松地让用户上载图像 (或任何类型的文件)并输入有关它们的元数据,例如名称, 说明、日期、地点、alt文本、标题属性等。
自动找到一些元数据,例如文件大小、mime类型, 图像大小、纵横比、MD5校验和等。
代码是高度解耦的,因此您可以轻松地调整行为。
业务规则在单独的层中实现 (与任何存储策略和任何用户界面隔离) 称为“动作”层。(这通常被称为“服务”层, 但我们称之为“行动”。)这使我们有可能 存储后端并使用任何web框架或其他ui框架。
每个应用程序都有自己的业务规则,因此 您将子类化提供的操作层,以调整工作流 你的目的。
其中一个“动作”是上传图像处理的可插拔策略。 例如,默认策略转换原始上载的图像 以JPEG格式(因此它永远不会存储不必要的大BMP)。 可以选择将原始图像存储为任意大小,然后 创建可配置的较小版本。
有些相机不旋转照片,只是将方向元数据添加到 图像文件,因此keepluggable会在创建缩略图之前为您旋转它。
协作
我们需要你的帮助。我们对功能请求、建议和 bug reports 和 pull requests, 以相反的开放顺序。
迁移到Keepluggable 0.8
keepluggable 0.8改变了文件的存储方式。怎样?
- 它使用“/”字符而不是“-”分隔名称空间。这个 在s3管理控制台中创建更好的用户体验。
- 如果愿意,现在每个环境只能使用一个bucket。 多个可维护的集成(在单个应用程序中)可以使用 相同的bucket,因为每个keepughable集成都可以使用 自己的目录。
- 在bucket名称和文件名之间,您可以创建自己的 目录方案(例如“/users/42/avatars/angry_mode/”)。我在打电话 这是一条“中间道路”。请参阅中的函数get_middle_path()。 orchestrator.py文件。
提供了迁移功能,以便您可以更新旧存储 保持可插拔0.8。请参阅文件中的方法migrate_bucket()。 amazon_s3.py。
配置设置的名称也在0.8中更改。