跳转到主要内容

实现使用亚马逊S3、sftp等存储概念

项目描述

Beta License: LGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

此插件是一个技术插件,允许您为数据定义类似文件系统的存储。它被其他插件用于以透明的方式将数据存储到不同类型的存储中。

通过fs.storage记录,您将访问实现fsspec.spec.AbstractFileSystem接口的对象,从而为您提供一个统一的接口来访问数据,无论您决定使用哪种存储协议。

支持的协议列表取决于已安装的fsspec实现。默认情况下,该插件将安装以下协议

  • LocalFileSystem

  • MemoryFileSystem

  • ZipFileSystem

  • TarFileSystem

  • FTPFileSystem

  • CachingFileSystem

  • WholeFileSystem

  • SimplCacheFileSystem

  • ReferenceFileSystem

  • GenericFileSystem

  • DirFileSystem

  • DatabricksFileSystem

  • GitHubFileSystem

  • JupiterFileSystem

  • OdooFileSystem

OdooFileSystem是允许您将数据存储到挂载在Odoo存储目录中的目录中的那个。这是创建新的fs.storage记录时的默认FS存储。

其他协议可通过安装额外的Python包获得

  • DropboxDriveFileSystem -> pip install fsspec[dropbox]

  • HTTPFileSystem -> pip install fsspec[http]

  • HTTPSFileSystem -> pip install fsspec[http]

  • GCSFileSystem -> pip install fsspec[gcs]

  • GSFileSystem -> pip install fsspec[gs]

  • GoogleDriveFileSystem -> pip install gdrivefs

  • SFTPFileSystem -> pip install fsspec[sftp]

  • HaddoopFileSystem -> pip install fsspec[hdfs]

  • S3FileSystem -> 使用pip安装fsspec[s3]

  • WandbFS -> 使用pip安装wandbfs

  • OCIFileSystem -> 使用pip安装fsspec[oci]

  • AsyncLocalFileSystem -> 使用pip安装‘morefs[asynclocalfs]’

  • AzureDatalakeFileSystem -> 使用pip安装fsspec[adl]

  • AzureBlobFileSystem -> 使用pip安装fsspec[abfs]

  • DaskWorkerFileSystem -> 使用pip安装fsspec[dask]

  • GitFileSystem -> 使用pip安装fsspec[git]

  • SMBFileSystem -> 使用pip安装fsspec[smb]

  • LibArchiveFileSystem -> 使用pip安装fsspec[libarchive]

  • OSSFileSystem -> 使用pip安装ossfs

  • WebdavFileSystem -> 使用pip安装webdav4

  • DVCFileSystem -> 使用pip安装dvc

  • XRootDFileSystem -> 使用pip安装fsspec-xrootd

此支持的协议列表可能不完整,也可能随着fsspec版本的发布而更改。您可以在fsspec文档中找到有关支持的协议的更多信息fsspec文档

目录

使用方法

配置

创建新的后端时,您必须指定以下内容

  • 后端名称。这是将在Odoo中识别后端时使用的名称

  • 后端代码。此代码将标识ir.attachment模型中的store_fname字段中的后端。此代码必须是唯一的。它将用作方案。store_fname字段的示例:odoofs://abs34Tg11

  • 后端使用的协议。协议指的是fsspec Python包支持的协议。

  • 目录路径。这是将从其中挂载文件系统的根目录。此目录必须存在。

  • 协议选项。这些是将在创建文件系统时传递给fsspec Python包的选项。这些选项取决于使用的协议,并在fsspec文档中描述。

  • 解析环境变量。此选项从环境变量中解析协议选项值,以$开头

在fsspec包中定义的一些协议是其他协议的包装器。例如,SimpleCacheFileSystem协议是任何本地文件系统协议的包装器。在这种情况下,您必须在协议选项中指定要包装的协议以及传递给包装协议的选项。

例如,如果您想创建一个使用SimpleCacheFileSystem协议的后端,在选择了SimpleCacheFileSystem协议后,您必须按以下方式指定协议选项

{
    "directory_path": "/tmp/my_backend",
    "target_protocol": "odoofs",
    "target_options": {...},
}

在这个例子中,SimpleCacheFileSystem协议将作为odoofs协议的包装器使用。

服务器环境

为了简化跨不同环境管理文件系统存储配置,文件系统存储的配置可以定义在环境文件中或直接在主配置文件中。例如,代码为fsprod的文件系统存储配置可以按如下方式提供在主配置文件中

[fs_storage.fsprod]
protocol=s3
options={"endpoint_url": "https://my_s3_server/", "key": "KEY", "secret": "SECRET"}
directory_path=my_bucket

为了工作,必须在数据库中存在具有代码fsprod的storage.backend记录。在您的配置部分,您可以指定以下字段的值

  • 协议

  • 选项

  • 目录路径

从storage_backend迁移

fs_storage插件可以用于替换storage_backend插件。(它已被设计为storage_backend插件的替代品)。为了简化迁移,fs.storage模型定义了storage_backend模型中可用的高级方法。这些方法是

  • add

  • get

  • list_files

  • find_files

  • move_files

  • delete

这些方法是对fsspec.AbstractFileSystem类的封装(请参阅https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem)。这些方法已被标记为过时,将在插件的未来版本(V18)中删除。您应该使用fsspec.AbstractFileSystem类的相关方法,因为它们更灵活、更强大。您可以通过fs.storage记录的fs属性访问fsspec.AbstractFileSystem类的实例。

已知问题/路线图

  • 事务:fsspec提供了一个事务机制,一旦开始,就会收集事务期间创建的所有文件,如果提交事务,则将它们移动到最终位置。将此与Odoo的事务机制相结合将很有用。这将确保在事务期间创建的所有文件要么全部移动到最终位置,要么在事务回滚时全部删除。此机制仅适用于通过调用文件系统的open方法在事务期间创建的文件。它不适用于其他操作,如rm、mv_file等。

变更日志

16.0.1.1.0 (2023-12-22)

特性

  • 在存储后端添加参数,以从环境变量解析以$开头的协议选项值(#303

16.0.1.0.3 (2023-10-17)

修复

  • 修复对技术模型的访问,以便基本访问权限的用户能够上传附件(#289

16.0.1.0.2 (2023-10-09)

修复

  • 避免在使用webdav协议时配置错误。期望auth选项是一个元组而不是列表。由于我们的配置是从json文件加载的,所以我们不能使用元组。修复在配置与webdav协议相关且auth选项在配置中时,将列表转换为元组。(#285

错误追踪器

错误在GitHub Issues上跟踪。如果遇到问题,请检查是否已报告您的问题。如果您是第一个发现它的人,请通过提供详细和受欢迎的反馈来帮助我们解决这个问题。

请不要直接联系贡献者以获取支持或帮助解决技术问题。

致谢

作者

  • ACSONE SA/NV

贡献者

维护者

本模块由OCA维护。

Odoo Community Association

OCA,或Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛使用。

本模块是GitHub上的OCA/storage项目的一部分。

欢迎您做出贡献。要了解如何操作,请访问https://odoo-community.org/page/Contribute

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

本发行版没有可用的源分发文件。请参阅有关生成分发存档的教程。

构建的分发

odoo_addon_fs_storage-17.0.1.0.1.3-py3-none-any.whl (53.1 kB 查看哈希值)

上传时间 Python 3

支持者