首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用uplink-Python创建一个新的storj桶

使用uplink-Python创建一个新的storj桶
EN

Stack Overflow用户
提问于 2022-12-01 23:37:06
回答 1查看 24关注 0票数 1

我正在尝试用上行连接python创建一个新的storj桶,有人知道这个错误吗?

谢谢

代码语言:javascript
复制
class Storage:

def __init__(self, api_key: str, satellite: str, passphrase: str, email: str):
    """
        account Storj
    """
    self.api_key = api_key
    self.satellite = satellite
    self.email = email
    self.passphrase = passphrase
    self.uplink = Uplink()
    self.config = Config()
    self.access = self.uplink.config_request_access_with_passphrase(self.config,
                                                                    self.satellite,
                                                                    self.api_key,
                                                                    self.passphrase)
    self.project = self.access.open_project() <-- open the project

def create_bucket(self, mybucket: str):
    """
     Create un bucket and ingnores the error if it already exist
    """
    print(mybucket)
    self.project.ensure_bucket(mybucket)

def get_bucket(self, mybucket: str):
    """
     verify bucket
    """
    print(mybucket)
    return self.project.stat_bucket(mybucket)

def close(self):
    self.project.close()


storage = Storage(api_key="zzz", satellite=".storj.io:7777", passphrase="passtest", mail="bucket@bucket.com")

确认旧水桶

代码语言:javascript
复制
storage.get_bucket("demo01") # it's works

创建一个新的桶

代码语言:javascript
复制
storage.create_bucket("Hello") # internal error

产出:

"../test/uplink/lib/python3.9/site-packages/uplink_python/project.py",文件

第121行,在ensure_bucket中引发 uplink_python.errors.InternalError:“内部错误”

第121行

代码语言:javascript
复制
    def ensure_bucket(self, bucket_name: str):
    """
    function ensures that a bucket exists or creates a new one.

    When bucket already exists it returns a valid Bucket and no error

    Parameters
    ----------
    bucket_name : str

    Returns
    -------
    Bucket
    """

    #
    # declare types of arguments and response of the corresponding golang function
    self.uplink.m_libuplink.uplink_ensure_bucket.argtypes = [ctypes.POINTER(_ProjectStruct),
                                                             ctypes.c_char_p]
    self.uplink.m_libuplink.uplink_ensure_bucket.restype = _BucketResult
    #
    # prepare the input for the function
    bucket_name_ptr = ctypes.c_char_p(bucket_name.encode('utf-8'))

    # open bucket if doesn't exist by calling the exported golang function
    bucket_result = self.uplink.m_libuplink.uplink_ensure_bucket(self.project, bucket_name_ptr)
    #
    # if error occurred
    if bool(bucket_result.error):
        raise _storj_exception(bucket_result.error.contents.code,
                               bucket_result.error.contents.message.decode("utf-8"))
    return self.uplink.bucket_from_result(bucket_result.bucket)

“内部错误”消息来自于“引发_storj_exception..”

添加:创建带有web接口的新桶没有错误。

参考文献:https://storj-thirdparty.github.io/uplink-python/#/library?id=ensure_bucketbucket_name

https://github.com/storj/uplink/blob/8da069b86063ee9671cc85cc44eaa6b8baf84b58/bucket.go#L97

EN

回答 1

Stack Overflow用户

发布于 2022-12-02 15:19:01

解决:桶名中的大写字母会导致内部错误.

替换

代码语言:javascript
复制
storage.create_bucket("Hello")

使用

代码语言:javascript
复制
storage.create_bucket("hello")

:)

编辑:这就是为什么:https://forum.storj.io/t/bucket-name-uppercase/20554/2?u=mike1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74649328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档