Python Storlet 编写和部署指南

这是 Python 特定的 storlet 编写和部署指南。本指南是对更通用的 storlet 编写和部署指南的补充,应先阅读该指南。

实现 storlet 的 Python 模块如下所示

class <Class name>(object):
    def __init__(self, logger):
        self.logger = logger

    def __call__(self, in_files, out_files, params):
        """
        The function called for storlet invocation
        :param in_files: a list of StorletInputFile
        :param out_files: a list of StorletOutputFile
        :param params: a dict of request parameters
        """

下面是一个类图,说明了 in_files、out_files 和 logger 背后的类。该图仅列出了 storlet 编写者需要使用的所有方法。

Python Programming Model Class Diagram
  1. StorletInputFile 用于将对象的数据流式传输到 storlet 中。StorletInputFile 具有与 Python FileObject 相同的读取方法。尝试写入 StorletInputFile 会产生 NotImplemented 错误。每当调用 storlet 时,都会提供此类的一个实例。要使用元数据,请调用 StorletInputFile.get_metadata 方法。

  2. StorleOutputFile 用于写入 storlet 输出。StorletOutputFile 具有与 Python FileObject 相同的写入方法。尝试从 StorletOutputFile 读取会产生 NotImplemented 错误。每当调用 storlet 时,都会提供此类的一个实例。使用 StorletInputFile.set_metadata 方法设置对象的元数据。请注意,storlet 必须调用 StorletInputFile set_metadata 方法。此外,必须在写入数据之前调用 StorletInputFile.set_metadata。

  3. StorletLogger。StorletLogger 类实现了与 Python logger 相同的日志记录方法。

通过 Swift REST API 调用时,将按如下方式调用 __call__ 方法

  1. in_files 列表将包含一个或多个 StorleInputFile 类型的元素,这些元素代表请求 URI 中出现的对象(以及可能的额外资源)。

  2. out_files 将包含一个 StorleOutputFile 类型的元素,代表返回给用户的响应。

  3. parameters 是一个字典,其中包含发送的执行参数。这些参数可以在 storlet 执行请求中指定。

  4. 一个 StorletLogger 实例。

部署 Python Storlet

以下是部署 Python storlet 的具体指南

  1. 包含 storlet 类实现的 Python 模块的对象名称必须以 .py 结尾

  2. 类实现所依赖的任何 Python 模块都应作为单独的 .py 文件上传。

  3. ‘X-Object-Meta-Storlet-Main’ 元数据键应采用以下形式:<module_name>.<class_name>。例如,如果 storlet 名称为 SimpleStorlet 并且它位于 simple_storlet.py 中,则 ‘X-Object-Meta-Storlet-Main’ 元数据键应为“simple_storlet.SimpleStorlet”

部署 Python 依赖项

  1. 目前,上传的内容作为依赖项没有限制。