最近需要用到获取七牛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'}
,请问是什么原因
你可以通过 http://docs.qiniu.com/api/v6/bucket-stat.html 这个文档中的接口信息来对空间用量的查询,这些接口并不直接对外提供,因为流量和空间容量的数据统计延迟会导致实时的统计结果并不一定准确。