首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式存储——ceph 的 python 基础接口

分布式存储——ceph 的 python 基础接口

作者头像
用户2434869
发布2018-09-12 10:40:39
1.3K0
发布2018-09-12 10:40:39
举报
文章被收录于专栏:yl 成长笔记yl 成长笔记

python 使用 boto 库完成分布式存储读、写、判断接口

import boto
import boto.s3.connection
from boto.s3.key import Key
import os


class ImageFeatIO:
    __read_singleton = None
    __write_singleton = None
    __read_count = 0
    __write_count =0

    def __init__(self):
        pass

    @staticmethod
    def get_write_instance():
        if ImageFeatIO.__write_singleton is None:
            ImageFeatIO.__write_count += 1
            print("create write instance:{0}",ImageFeatIO.__write_count)
            paras = get_config('config')
            access_key = paras['access_key']
            secret_key =paras['secret_key']
            write_host=paras['file_write_host']
            conn = boto.connect_s3(
                aws_access_key_id=access_key,
                aws_secret_access_key=secret_key,
                host=write_host, is_secure=False,
                calling_format=boto.s3.connection.OrdinaryCallingFormat()
            )
            bucket_name = paras['bucket_name']
            bucket = conn.get_bucket(bucket_name)
            ImageFeatIO.__write_singleton=bucket
        return ImageFeatIO.__write_singleton

    @staticmethod
    def get_read_instance():
        if ImageFeatIO.__read_singleton is None:
            ImageFeatIO.__read_count += 1
            print("create read instance:{0}", ImageFeatIO.__read_count)
            paras = get_config('config')
            access_key = paras['access_key']
            secret_key = paras['secret_key']
            read_host = paras['file_read_host']
            conn = boto.connect_s3(
                aws_access_key_id=access_key,
                aws_secret_access_key=secret_key,
                host=read_host, is_secure=False,
                calling_format=boto.s3.connection.OrdinaryCallingFormat()
            )
            bucket_name = paras['bucket_name']
            bucket = conn.get_bucket(bucket_name)
            ImageFeatIO.__write_singleton = bucket
        return ImageFeatIO.__read__singleton


def write_image_feature_to_file(id, imageFeaturestring):
    bucket = ImageFeatIO.get_write_instance()
    k = Key(bucket)
    k.key = id
    res = k.set_contents_from_string(imageFeaturestring)
    return res


def read_image_feature_from_file(id):
    bucket = ImageFeatIO.get_write_instance()
    k = Key(bucket)
    k.key=id
    feature = k.get_contents_as_string()
    return feature


def if_image_feature_exist(id):
    bucket = ImageFeatIO.get_write_instance()
    key = bucket.get_key(id)

    return key is not None


def get_config(config_file='config'):
    paras = dict()
    if os.path.exists(config_file):
        f = open(config_file)
        line = f.readline()
        while line:
            # print('line is ', line)
            s = line.replace(' ', '').replace('\n','').split('=')
            print(s, len(s))
            paras[s[0]] = s[1]
            line = f.readline()
        # print(' paras: ', paras)
        f.close()
    else:
        raise ValueError(config_file + ': file not exsit!')
    return paras

# if __name__ == "__main__":
#     instance1 = ImageFeatIO.get_write_instance()
#     instance2 = ImageFeatIO.get_write_instance()
#     instance3 = ImageFeatIO.get_write_instance()
#
#
#     print id(instance1)
#     print id(instance2)

其中 config 文件为参数配置文件, 不同参数以回车键分割

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档