zoukankan      html  css  js  c++  java
  • 分布式存储——ceph 的 python 基础接口

    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('
    ','').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 文件为参数配置文件, 不同参数以回车键分割

  • 相关阅读:
    svn不提交.net项目中的bin
    java 与C# 时间格式 交互
    生成菜单序列号
    ashx 方法模板
    webservice使用方法
    如何配置IIS服务器?
    zepto.fullpage
    模拟单选框
    star score
    Hover show tips
  • 原文地址:https://www.cnblogs.com/yaolin1228/p/9064540.html
Copyright © 2011-2022 走看看