我正在尝试使用 Flask 应用程序返回一些使用 Flask 缓存缓存的 json 数据。
这个端点有效,以及烧瓶缓存来缓存,get_payload
而无需重新运行该函数:
@app.route('/payload/current', methods=['GET'])
def event_state_current():
return get_payload()
但是这个端点根本不起作用,应用程序将返回一个URL NOT FOUND:
@app.route('/payload/hourly,', methods=['GET'])
def event_state_hourly():
return get_future()
我对导致这种情况的烧瓶缓存有什么问题吗?有效的端点完成了我期望烧瓶缓存所做的只是get payload
每 60 秒运行一次该函数,但我无法弄清楚为什么它/payload/hourly
根本不起作用。它几乎就像烧瓶缓存只支持一个端点,除非我做错了什么。
这是任何人都可以尝试的 Flask 应用程序,它只是组成数据,但我没有在 localhost 上运行它。
from flask import Flask, request, jsonify
from flask_caching import Cache
import datetime, pytz, random
tz = pytz.timezone('America/Chicago')
cache = Cache()
app = Flask(__name__)
cache.init_app(app, config={'CACHE_TYPE': 'SimpleCache'})
@cache.cached(timeout=60, key_prefix='get_payload')
def get_payload():
utc_time = datetime.datetime.utcnow()
utc_time = utc_time.replace(tzinfo=pytz.UTC)
corrected_time = utc_time.astimezone(tz)
randnum = random.randint(1,1000)
response_obj = {'status':'success','server_time_corrected':str(corrected_time),'timezone':str(tz),'payload':randnum}
print(response_obj)
return jsonify(response_obj), 200
@cache.cached(timeout=300, key_prefix='get_future')
def get_future():
utc_time = datetime.datetime.utcnow()
utc_time = utc_time.replace(tzinfo=pytz.UTC)
corrected_time = utc_time.astimezone(tz)
randnum = random.randint(1,1000)
response_obj = {'status':'success','server_time_corrected':str(corrected_time),'timezone':str(tz),'payload':randnum}
print(response_obj)
return jsonify(response_obj), 200
@app.route('/payload/current', methods=['GET'])
def event_state_current():
return get_payload()
@app.route('/payload/hourly,', methods=['GET'])
def event_state_hourly():
return get_future()
if __name__ == '__main__':
app.run(debug=False,port=5000,host='0.0.0.0')
EDIT,用于测试 Flask App Endpoints 的屏幕截图,此 GET 请求有效: