A-A+

运维开发:用阿里云python SDK开发CDN刷新页面

2016年08月02日 Python 暂无评论 阅读 12,628 views 次

本次是直接安装了阿里云最新的python SDK包,不再像以前那样,要下载他们的包放到自己的程序中了。

 

SDK包安装:

pip install aliyun-python-sdk-cdn

官方资料:https://helpcdn.aliyun.com/document_detail/27247.html?spm=5176.doc27251.6.255.wZ55kx

 

例子:查看域名列表的使用步骤:

第一步,需要初始化Client。

from aliyunsdkcore import client
Client=client.AcsClient('你的阿里云AccessKey','你的阿里云AccessSecret','cn-hangzhou')

第二步, 初始化request,设置参数

from aliyunsdkcdn.request.v20141111 import DescribeUserDomainsRequest

request = DescribeUserDomaiRequest.DescribeUserDomainsRequest()

request.set_accept_format('json')  # 设置返回数据格式为json

request.set_PageNumber(1)  # 取得第几页 取值范围为:1~100000

request.set_PageSize(5)   # 分页大小,默认20,最大50 取值:1~50之前的任意整数

第三步,发起API调用

result=Client.do_action(request)

第四步,框架中返回结果:

return json.dumps(result)

以上相关资料:

https://helpcdn.aliyun.com/document_detail/27248.html?spm=5176.doc27247.6.256.D6zNLQ

 

以下是我写的几个CDN功能代码:

  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. __author__ = '戴儒锋'
  4. import json
  5. import datetime
  6. from dateutil.parser import parse
  7. from bottle import get,post
  8. from bottle import template
  9. # 引入自已写的方法和阿里云配置
  10. from controller.core import reMsg,checkArgs
  11. from conf import setting
  12. # 导入阿里云API模块,官方提供 pip install aliyun-python-sdk-cdn
  13. # 第一个参数是AccessKey,AccessKey和AccessSecret是您访问阿里云API的一对钥匙(点击这里创建和管理您的AccessKey);
  14. # 第二个参数是AccessSecret,AccessSecret相当于您的口令,请不要被第三方获知;
  15. # 第三个是默认RegionId,
  16. from aliyunsdkcore import client
  17. from aliyunsdkcdn.request.v20141111 import DescribeUserDomainsRequest   # 引入获取CDN域名列表类
  18. from aliyunsdkcdn.request.v20141111 import RefreshObjectCachesRequest   # 引入刷新CDN的类
  19. from aliyunsdkcdn.request.v20141111 import DescribeRefreshTasksRequest  # 引入获取CDN刷新操作日志类
  20. from aliyunsdkcdn.request.v20141111 import DescribeRefreshQuotaRequest  # 引入获取剩余刷新次数的类
  21. Client=client.AcsClient(setting.ali_key,setting.ali_secret,'cn-hangzhou')
  22. @get('/cdn/')
  23. def callback():
  24.     """ 获取CDN今日剩余可刷新的次数 """
  25.     request = DescribeRefreshQuotaRequest.DescribeRefreshQuotaRequest()
  26.     request.set_accept_format('json')
  27.     result =  json.loads(Client.do_action(request))
  28.     result['UrlPer'] = format(float(result.get('UrlRemain'))/float(result.get('UrlQuota')),'.2%') # 统计URL当日可刷新量百分比
  29.     result['DirPer'] = format(float(result.get('DirRemain'))/float(result.get('DirQuota')),'.2%') # 统计目录当日可刷新量百分比
  30.     return template('cdn',data=result)
  31. @get('/get_domains/')
  32. def callback():
  33.     """ 获取域名列表 """
  34.     request = DescribeUserDomainsRequest.DescribeUserDomainsRequest()
  35.     request.set_accept_format('json')
  36.     request.set_PageNumber(1)   # 取得第几页 取值范围为:1~100000
  37.     request.set_PageSize(50)     # 分页大小,默认20,最大50 取值:1~50之前的任意整数
  38.     result=json.loads(Client.do_action(request)).get("Domains").get("PageData")
  39.     return json.dumps(result)
  40. @post('/refresh_cdn/')
  41. def callback():
  42.     """ 刷新CDN """
  43.     url_path = checkArgs('url_path',"文件URL路径")
  44.     s_type = checkArgs('s_type',"文件类型")
  45.     for url in url_path.split():
  46.         request = RefreshObjectCachesRequest.RefreshObjectCachesRequest()
  47.         request.set_ObjectPath(url)     # 刷新地址
  48.         request.set_ObjectType(s_type)  # 地址类型
  49.         request.set_accept_format('json')
  50.         Client.do_action(request)       # 刷新
  51.     return reMsg(0,"刷新完成,稍等会即生效")
  52. @post('/refresh_history_cdn/')
  53. def callback():
  54.     """ 选择文件刷新CDN """
  55.     url_path = checkArgs('url_path',"文件URL路径")
  56.     request = RefreshObjectCachesRequest.RefreshObjectCachesRequest()
  57.     request.set_ObjectPath(url_path)    # 刷新地址
  58.     request.set_ObjectType('File')      # 地址类型
  59.     request.set_accept_format('json')
  60.     Client.do_action(request)           # 刷新
  61.     return reMsg(0,"刷新完成,稍等会即生效")
  62. @get('/get_cdn_log/')
  63. def callback():
  64.     """ 获取七天内CDN刷新操作日志的最近50条:查询刷新、预热状态,是否在全网生效。"""
  65.     request = DescribeRefreshTasksRequest.DescribeRefreshTasksRequest()
  66.     request.set_accept_format('json')
  67.     request.set_PageNumber(1)   # 取得第几页 取值范围为:1~100000
  68.     request.set_PageSize(50)     # 分页大小,默认20,最大50 取值:1~50之前的任意整数
  69.     data =json.loads(Client.do_action(request)).get("Tasks").get("CDNTask")
  70.     # 处理时间:阿里云返回的时间格式是UTC,现处理成北京时间,把字符格式转换成时间格式,并+8小时
  71.     for i in data:
  72.         i['CreationTime'] = (parse(i['CreationTime']) + datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S')
  73.     return json.dumps(data)

 

前端图示:

阿里云CDN前端

阿里云CDN前端

 

阿里云CDN python SDK资料:

https://helpcdn.aliyun.com/document_detail/27247.html

阿里云CDN API操作手册:

https://helpcdn.aliyun.com/document_detail/27148.html

 

阿里云python CDN SDK上的示例资料不全,如果要整合开多的CDN功能,则要多参考CDN API操作手册

阿里云所有的包都在:/usr/lib/python2.6/site-packages/aliyunsdkcdn/request/v20141111/目录内(python2.6.6版本),你要开发什么功能,就在操作手册那查看它的类包,传参参数,返回参数等。

有不懂的,可留言,或加python运维开发QQ群:458088280

 

给我留言

Copyright © linux系统运维 保留所有权利.   Theme  Ality 粤ICP备13023035号-1

用户登录

分享到: