这是Python特定的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 writer预期使用的方法。
- StorletInputFile用于将对象的数据传输到storlet中。 StorletInputFile具有与python FileObject相同的读取方法。 尝试写入StorletInputFile会产生NotImplemented错误。 每当调用一个storlet时,都会提供这个类的一个实例。 要使用元数据则调用StorletInputFile.get_metadata方法。
- StorleOutputFile用于写入storlet输出。 StorletOutputFile具有与python FileObject相同的写入方法。 尝试从一个StorletOutputFile读取会产生NotImplemented错误。 每当调用一个storlet时,都会提供这个类的一个实例。 使用StorletInputFile.set_metadata方法设置对象的元数据。 请注意,storlet必须调用StorletInputFile set_metadata方法。 必须在写入数据之前调用StorletInputFile.set_metadata。
- StorletLogger。 StorletLogger类实现与Python日志记录器相同的日志方法。
当通过Swift REST API调用时,__call__方法将被如下调用:
1. in_files列表将包括一个或多个类型为StorleInputFile的元素,表示出现在请求的URI中的对象(以及可能的额外资源)。
2. out_files将包括一个类型为StorleOutputFile的单个元素,表示返回给用户的响应。
3. 参数是发送执行参数的字典。 这些参数可以在storlet执行请求中指定。
4. 一个StorletLogger实例。
Deploying a Python Storlet
以下是部署Python storlet的具体指导:
1. 包含storlet类实现的python模块的对象名称必须以.py结尾
2. 类实现依赖的任何python模块都应该以独立的.py()方式上传。
3. ‘X-Object-Meta-Storlet-Main’元数据key的格式为:<module_name>.<class_name> 例如,如果storlet名称是SimpleStorlet,并且它位于simple_storlet.py中,那么’X-Object-Meta-Storlet-Main’元数据key就是“simple_storlet.SimpleStorlet”
Deploying a Python Dependency
- 目前,关于什么作为依赖上传时没有限制的。