openstack storlet文档(六):IPython Notebook Integration

来源:互联网 发布:淘宝卖家会员管理 编辑:程序博客网 时间:2024/05/16 16:12

IPython Notebook Integration

IPython / Jupyter提供了一个基于浏览器的交互式shell以支持数据可视化。与IPython集成的storlet可以通过IPython notebook轻松部署和调用storlets。 在下面的章节中,我们将介绍如何将IPython notebook设置为使用storlet,如何部署python storlet以及如何调用一个storlet。

Set up IPython to work with storlets

设置一个IPython notebook来与storlet工作包括:
1. 提供一个支持Swift账号的认证信息
这是通过设置类似于swift客户端使用的环境变量来完成的。 需要设置的确切变量取决于所使用的auth中间件和auth协议版本。 详情请参考:python-swiftclient docs
2. 加载storlets IPython扩展
下面显示了符合默认的storlet开发环境安装的环境变量(s2aio):

import osos.environ['OS_AUTH_VERSION'] = '3'os.environ['OS_AUTH_URL'] = 'http://127.0.0.1:5000/v3'os.environ['OS_USERNAME'] = 'tester'os.environ['OS_PASSWORD'] = 'testing'os.environ['OS_USER_DOMAIN_NAME'] = 'default'os.environ['OS_PROJECT_DOMAIN_NAME'] = 'default'os.environ['OS_PROJECT_NAME'] = 'test'

要加载存储库IPython扩展,只需输入并执行如下:

%load_ext storlets.tools.extensions.ipython

Deploy a Python storlet

storlet部署的通用背景is here
在新的notebook cell中,输入“%% storletapp”指令,直接接storlet的名称。 按照storlet的类型。 下面是一个简单的’identitiy’ storlet的例子。执行这个cell会将这个storlet部署到Swift中。

%%storletapp test.TestStorletclass TestStorlet(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        """        self.logger.debug('Returning metadata')        metadata = in_files[0].get_metadata()        for key in params.keys():          metadata[key] = params[key]        out_files[0].set_metadata(metadata)        self.logger.debug('Start to return object data')        content = ''        while True:            buf = in_files[0].read(16)            if not buf:                break            content += buf        self.logger.debug('Recieved %d bytes' % len(content))        self.logger.debug('Writing back %d bytes' % len(content))        out_files[0].write(content)        self.logger.debug('Complete')        in_files[0].close()        out_files[0].close()

Note: 要在实际的数据集上运行该storlet,可以在cell的顶部输入以下内容

%%storletapp test.TestStorlet --with-invoke --input path:/<container>/<object> --print-result

注: 有用的命令,如“dry-run”正在开发中。 有关选项的更多详细信息,请参见下一节。

Invoke a storlet

here可以找到有关storlet调用的一般信息
以下是调用的工作原理:
1. 定义一个可选的字典变量params,它将保存调用参数:

myparams = {'color' : 'red'}
  1. 要调用test.TestStorlet,只需键入以下内容:
%get --storlet test.py --input path:/<container>/<object>  -i myparams -o myresult

the invocation将通过从myparams读取的参数在指定的swift对象上执行test.py。 结果是放在myresult中。 ‘-i’参数是可选的,但是如果指定了提供的值那么必须是定义的字典变量的名称。myresults是一个storlets.tools.extensions.ipython.Response的实例。这个类有以下成员:
1. status- 一个integer用于保存Http响应状态
2. headers-一个字典,保存storlet调用响应头部
3. iter_content-一个迭代器对响应内容进行迭代
4. content-响应体的内容
5. 要调用test.TestStorlet,只需输入以下内容:

%put --storlet test.py --input <full path to local file> --output path:/<container>/<object>  -i myparams -o myresult

调用将在-input选项指定的上传文件上执行test.py,该选项必须是完整的本地路径。 使用从myparams读取的参数调用test.py。 结果是放在myresult中。 ‘-i’参数是可选的,但是,如果指定了提供的值必须是定义的变量的名称。 myresults是一个具有以下键的字典:
1. stauts-一个integer用于保存Http响应状态
2. header-一个字典,保存storlet调用响应头部
3. 要调用test.TestStorlet,只需输入以下内容:

%copy --storlet test.py --input path:/<container>/<object> --output path:/<container>/<object>  -i myparams -o myresult============未完,突然不想翻了==========================
原创粉丝点击