看了这么长时间《神秘的程序员》,看了这么久七牛的广告,一直没有抽时间实验一下用传说中的对象存储存图片。
今天有机会,花半天试验了一下。
随便注册了个个人的,免费,不用绑定域名,输入ip也可以。按照sdk,上传、下载、引用都没问题,但是在缓存刷新上卡了一下。
主要问题,他的缓存机制,如果同样的key覆盖更新,一天只能更新500次,每次只能更新XX个key
如果是用户头像之类需要经常更新的东西:不应该用同名key覆盖,而是每次对七牛产生唯一的uuid,删除旧uuid文件,上传新uuid文件
就无关缓存问题了。
——主要还是没接触过缓存、cdn这些概念,对键值存储的用法不对。
代码是测试用的分段乱写的
from qiniu import Auth, put_file,http import requests import json # 下载 access_key = 'aaa' secret_key = 'bbb' q = Auth(access_key, secret_key) print(q) bucket_domain = 'ccc.bkt.clouddn.com' key = '2139614121.jpg' #有两种方式构造base_url的形式 base_url = 'http://%s/%s' % (bucket_domain, key) #可以设置token过期时间 private_url = q.private_download_url(base_url, expires=3600) print(private_url) r = requests.get(private_url) assert r.status_code == 200 #上传: #要上传的空间 bucket_name = 'ddd' #上传到七牛后保存的文件名 用户头像 uid = 1 key = '{0}_head'.format(uid) #生成上传 Token,可以指定过期时间等 token = q.upload_token(bucket_name, key, 3600) #要上传文件的本地路径 localfile = './static/img/3.jpg' ret, info = put_file(token, key, localfile) print(info) #assert ret['key'] == key #assert ret['hash'] == etag(localfile) #刷新七牛缓存,要对指定web_api发起请求,才会刷新缓存 url = 'http://fusion.qiniuapi.com/v2/tune/refresh' data = { "urls": ['http://oz4pkhxf8.bkt.clouddn.com/1_head'], "dirls":[] } res = http._post_with_auth(url, data, q) print(res) #view中调用 def view(): #uid = user.id uid = 1 key_image_qiniu = '{0}_head'.format(uid) # 有两种方式构造base_url的形式 base_url = 'http://%s/%s' % (bucket_domain, key) private_url = q.private_download_url(base_url, expires=3600) print(private_url)