Flask 端点返回 404 未找到
Flask Endpoint returning 404 not found
我正在尝试使用 Flask 应用程序来 return 一些使用 Flask 缓存缓存的 json 数据。
这个端点和 flask-caching 一样可以缓存 get_payload
而无需重新 运行 函数:
@app.route('/payload/current', methods=['GET'])
def event_state_current():
return get_payload()
但是这个端点根本不起作用,应用程序将 return URL NOT FOUND :
@app.route('/payload/hourly,', methods=['GET'])
def event_state_hourly():
return get_future()
是不是我对烧瓶缓存所做的任何错误导致了这种情况?工作的端点做我期望烧瓶缓存做的只是每 60 秒 运行 get payload
函数,但我无法弄清楚为什么 /payload/hourly
根本不起作用。它几乎就像烧瓶缓存只支持一个端点,除非我做错了什么。
这是任何人都可以尝试的 Flask 应用程序,它只是构成数据,但我没有 运行在本地主机上安装它。
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')
编辑,用于测试 Flask 应用端点的屏幕截图,此 GET 请求有效:
这个端点不起作用,有什么想法可以尝试吗?
最后一个 URL 中有一个逗号:'/payload/hourly,'
只需删除它,它就会起作用。
我正在尝试使用 Flask 应用程序来 return 一些使用 Flask 缓存缓存的 json 数据。
这个端点和 flask-caching 一样可以缓存 get_payload
而无需重新 运行 函数:
@app.route('/payload/current', methods=['GET'])
def event_state_current():
return get_payload()
但是这个端点根本不起作用,应用程序将 return URL NOT FOUND :
@app.route('/payload/hourly,', methods=['GET'])
def event_state_hourly():
return get_future()
是不是我对烧瓶缓存所做的任何错误导致了这种情况?工作的端点做我期望烧瓶缓存做的只是每 60 秒 运行 get payload
函数,但我无法弄清楚为什么 /payload/hourly
根本不起作用。它几乎就像烧瓶缓存只支持一个端点,除非我做错了什么。
这是任何人都可以尝试的 Flask 应用程序,它只是构成数据,但我没有 运行在本地主机上安装它。
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')
编辑,用于测试 Flask 应用端点的屏幕截图,此 GET 请求有效:
这个端点不起作用,有什么想法可以尝试吗?
最后一个 URL 中有一个逗号:'/payload/hourly,'
只需删除它,它就会起作用。