腾讯云获取已购实例的费用

使用SDK

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

#获取每天腾讯云的实例数量,以及每个实例的价格,以月为单位存储到数据库,生成柱状图以方便查看

from QcloudApi.qcloudapi import QcloudApi
import json
import gevent.monkey
gevent.monkey.patch_os()
import gevent

data={}

class clould_q():

    def __init__(self):
        pass

    def config(self):

        ''' 设置基本参数 '''
        module = 'cvm'
        action = 'DescribeInstances'
        config = {
                  'Region': 'gz',
                  'secretId': 'xxxxxxxxxxxxxxxxxxxxxxxxxxx',
                  'secretKey': 'xxxxxxxxxxxxxxxxxxxxxxxxx',
                  'method': 'post'
                 }
        return config

    def instance_number(self):
        ''' 获取实例数量 '''
        module = 'cvm'
        action = 'DescribeInstances'
        params = {
                  'SignatureMethod':'HmacSHA256',
                  'limit':'1',
                  'offset':'0'
                 }
        try:
            service = QcloudApi(module, self.config())
            service.generateUrl(action, params)
            info = json.loads(service.call(action, params))  #把字符串转成json字符串
            return int(info['totalCount'])

        except Exception, e:
            print 'error:', e

    def instance_id(self):
        ''' 获取所有实例的id,api只支持最多一次100个实例的查询 '''

        num = self.instance_number()
        ids = []
        for count in range(0,(num/100)+1): #需要重新设置参数,我们有105台实例,105/100 = 1 , 1+1=2 ,需要2次循环
            module = 'cvm'
            action = 'DescribeInstances'
            params = {
                      'SignatureMethod':'HmacSHA256',
                      'limit':'100',
                      'offset':100*int(count)                        #设置偏移量
                     }

            try:
                service = QcloudApi(module, self.config())
                service.generateUrl(action, params)
                info = json.loads(service.call(action, params))  #把字符串转成json字符串,获取了所有信息
                for i in range(0,len(info['instanceSet'])):
                    ids.append(info['instanceSet'][i]['unInstanceId'])     #内部循环获取实例的unInstanceId 

            except Exception, e:
                print 'error:', e
        return ids

    def money(self,id):
        '''获取每个实例一个月的费用,只是实例本身,没包括存储和带宽之类的'''
        module = 'cvm'
        action = 'InquiryInstancePrice'
        params = {
                  'SignatureMethod':'HmacSHA256',
                  'instanceId':id,
                  'instanceType':'1',
                  'period':'1'
                 }

        try:
            service = QcloudApi(module, self.config())
            service.generateUrl(action, params)
            info = json.loads(service.call(action, params))  #把字符串转成json字符串
            d[id] = info['price']
        except Exception, e:
            print 'error:', e

        gevent.sleep(1)           #由于腾讯云的限制,我们切换协程的时间要稍微大点,以免腾讯云API无法访问

if __name__ == '__main__':

        threads=[]
        instance_id = clould_q().instance_id()
        for id in instance_id:
            threads.append(gevent.spawn(clould_q().money,id))
        gevent.joinall(threads)
        print data

最后的data就是我们的数据

转载于:https://my.oschina.net/jastme/blog/865426

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值