我的 Flask 应用将仅从特定时间的 URL 获取数据。如果超出时间范围,它将使用保存在缓存中的 URL 的最后一个查询数据。超出时间范围,URL 将不返回任何数据。因此,我希望重用缓存中的最后一个数据。
from flask_app import app
from flask import jsonify,abort,make_response,request
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.cache import Cache
from datetime import datetime, time
app.config['CACHE_TYPE'] = 'simple'
app.cache = Cache(app)
@app.route('/top', methods=['GET'])
@app.cache.cached(timeout=60)
def top():
now = datetime.now()
now_time = now.time()
if now_time >= time(10,30) and now_time <= time(16,30):
print "within time, use data save in cache"
# function that use last data query from url, save in cache
else:
page = requests.get('http://www.abvfc.com')
data = re.findall(r'items:(.*)',page.content)
return jsonify(data)
问题在于我无法获取最新的缓存数据。如果在过去60秒内没有访问/api/top接口,那么就不会有数据。
在16:30返回无数据之前,将数据缓存一分钟
用户可以在时间范围外使用缓存数据
我对缓存不太熟悉,所以我的想法可能不是最好的方法。
cached
装饰器的timeout
参数吗?据我所知,你不希望缓存在10:30至16:30之间过期,对吗? - Daniel Ruiz