实现使用亚马逊S3、sftp等存储概念
项目描述
此插件是一个技术插件,允许您为数据定义类似文件系统的存储。它被其他插件用于以透明的方式将数据存储到不同类型的存储中。
通过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上跟踪。如果遇到问题,请检查是否已报告您的问题。如果您是第一个发现它的人,请通过提供详细和受欢迎的反馈来帮助我们解决这个问题。
请不要直接联系贡献者以获取支持或帮助解决技术问题。
致谢
贡献者
Laurent Mignon <laurent.mignon@acsone.eu>
Sébastien BEAU <sebastien.beau@akretion.com>
维护者
本模块由OCA维护。
OCA,或Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛使用。
本模块是GitHub上的OCA/storage项目的一部分。
欢迎您做出贡献。要了解如何操作,请访问https://odoo-community.org/page/Contribute。
项目详情
哈希值 for odoo_addon_fs_storage-17.0.1.0.1.3-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f696b19d6adbba77e0e0cfc83c74295edea643567846d27739c68c1d23fc089a |
|
MD5 | 9eab467b5242de92005d3d13f7f1327d |
|
BLAKE2b-256 | 142e634f9fc8ec5830234351c3eb00a7bee6dd9230e8612a7e58b0337fb8e18a |