获取七牛空间大小的接口

最近需要用到获取七牛bucket空间大小的接口,但文档上并没有该接口.
有的只有遍历文件大小的方式.但是文件有很多,要花费好几天的时间来获取文件大小,并相加才可得出,并且不是实时的.因此,七牛能否出一个接口来获取bucket空间使用大小?!急!

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import requests
import hmac
import logging

from urlparse import urlparse
from hashlib import sha1
from base64 import urlsafe_b64encode
from qiniu.auth.digest import Mac

AK = ""
SK = ""

class Bucket(object):
   def __init__(self, accessKey, secretKey):
        self.mac = Mac(accessKey, secretKey)
        self.host = "http://api.qiniu.com"

    def getAccessToken(self, url, body, contentType):
        return self.mac.sign_request(url, body, contentType)

    def getAuthorization(self, accessToken):
        return "QBox %s" % accessToken 

    def query(self, url):
        accessToken = self.getAccessToken(url, "", "")
        auth = self.getAuthorization(accessToken)

        headers = {"Authorization": auth}
        try:
            res = requests.get(url, headers=headers) 
        except Exception, e:
            logging.error(e)
            return None

        return res.json()

    def statByMonth(self, bucket, month):
        query = "/stat/info?bucket=%s&month=%s" % (bucket, month)
        url = self.host + query 
        return self.query(url)

    def statSpace(self, bucket, start, to, p):
        query = "/stat/select/space?bucket=%s&from=%s&to=%s&p=%s"
        query = query % (bucket, start, to, p)

        url = self.host + query
        return self.query(url)


if __name__ == "__main__":
    bucket = "testbucket"
    b = Bucket(AK, SK)

    month = "201501"
    print b.statByMonth(bucket, month)


    start = "20150129"
    to = "20150130"
    p = "5min"
    print b.statSpace(bucket, start, to, p) 

这段代码老是出现查询bucket空间使用情况时, 出现{u'error': u'invalid argument'}或者{u'error': u'invalid show type'}
,请问是什么原因

阅读 4.5k
1 个回答

你可以通过 http://docs.qiniu.com/api/v6/bucket-stat.html 这个文档中的接口信息来对空间用量的查询,这些接口并不直接对外提供,因为流量和空间容量的数据统计延迟会导致实时的统计结果并不一定准确。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进