-1

我正在尝试使用 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 请求有效:

在此处输入图像描述

这个端点不起作用,有什么想法可以尝试吗? 在此处输入图像描述

4

1 回答 1

0

您的最后一个 URL 中有一个尾随逗号:'/payload/hourly,'

只需将其删除,它应该可以工作。

于 2021-08-31T16:52:29.723 回答