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

如何在Jupyter Notebook中运行Flask服务以开展测试?

在Jupyter Notebook中运行Flask服务测试Webhook处理器

实现方案

由于需要同时维持Flask服务器运行并访问AppContext,我们可以通过后台线程启动Flask服务,避免阻塞Jupyter Notebook的交互环境,同时直接在Notebook中发送请求测试Webhook处理器。

完整代码示例

  1. 安装依赖(若未安装)
!pip install flask requests
  1. 定义Flask应用与Webhook处理器
from flask import Flask, request, current_app
import threading
import requests

# 初始化Flask应用
app = Flask(__name__)

# 配置示例(模拟依赖AppContext的场景)
app.config['WEBHOOK_SECRET'] = 'test_secret_123'

# Webhook处理器(依赖AppContext和运行中的服务器)
@app.route('/webhook', methods=['POST'])
def webhook_handler():
    # 验证签名(模拟依赖AppContext中的配置)
    secret = current_app.config['WEBHOOK_SECRET']
    incoming_signature = request.headers.get('X-Webhook-Signature')
    
    if incoming_signature != secret:
        return "Invalid signature", 403
    
    # 处理Webhook payload
    payload = request.json
    print(f"Received webhook payload: {payload}")
    return "Success", 200
  1. 后台启动Flask服务
# 定义启动函数
def run_flask():
    app.run(host='0.0.0.0', port=5000, debug=False)  # debug模式在Notebook中易出问题,建议关闭

# 启动后台线程
flask_thread = threading.Thread(target=run_flask, daemon=True)
flask_thread.start()
  1. 测试Webhook处理器
# 模拟第三方发送Webhook请求
test_payload = {"event": "order_created", "data": {"order_id": "12345"}}
headers = {"X-Webhook-Signature": app.config['WEBHOOK_SECRET']}

response = requests.post('http://localhost:5000/webhook', json=test_payload, headers=headers)
print(f"Response status: {response.status_code}, Response text: {response.text}")

关键注意事项

  • 线程与资源清理:Notebook关闭后,后台线程可能未自动终止,若再次运行需确保端口未被占用(可更换端口或手动杀掉进程)。
  • Debug模式禁用:Flask的debug模式会启动额外线程,在Notebook环境中容易导致冲突,务必关闭。
  • 仅用于测试场景:此方案仅适用于QA测试、本地调试等边缘场景,绝对不能用于生产环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:55:22