You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask/FASTAPI中Webhook接收数据传递至首页渲染的问题咨询

解决方案

方案1:应用全局变量(单进程部署场景适用)

小型单实例部署场景下可以直接使用Flask自带的应用配置存储跨路由共享数据,修改代码如下:

# webhook接口新增存储逻辑
@app.route('/webhook', methods = ['POST'])
def webhook():
    data = json.loads(request.data)
    item_name = data.get('item')
    if item_name:
        price_of_item = get_item_price(df, item_name)
        # 将价格写入应用全局配置
        app.config['CURRENT_ITEM_PRICE'] = price_of_item
    return data
# 首页路由修改为读取全局配置
@app.route("/")
def index():
    price = app.config.get('CURRENT_ITEM_PRICE', '暂无查询结果')
    return index_template.format(message = price)

index_template = """
    <div> the price of apple is: {message} </div>
    """

注意:该方案仅适用于单worker单进程部署的场景,多进程部署时不同进程的全局变量相互独立,会出现取值不一致的问题。

方案2:内存缓存(多进程/多实例部署适用)

使用Flask-Caching组件做统一缓存存储,支持跨进程读写,扩展能力更强:

  1. 安装依赖:
pip install flask-caching
  1. 初始化缓存:
from flask_caching import Cache

# 配置为简单内存缓存,如需多机器部署可直接替换为Redis缓存
app.config['CACHE_TYPE'] = 'SimpleCache'
cache = Cache(app)
  1. webhook接口写入缓存:
@app.route('/webhook', methods = ['POST'])
def webhook():
    data = json.loads(request.data)
    item_name = data.get('item')
    if item_name:
        price_of_item = get_item_price(df, item_name)
        # timeout=0代表永久有效,可根据需求调整缓存过期时间
        cache.set('current_item_price', price_of_item, timeout=0)
    return data
  1. 首页路由读取缓存:
@app.route("/")
def index():
    price = cache.get('current_item_price') or '暂无查询结果'
    return index_template.format(message = price)

如果需要同时存储多个商品的价格,可以将存储结构替换为字典类型,以商品名称为键存储对应价格即可。


内容的提问来源于stack exchange,提问作者SamAct

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:54:00