服务端:
from flask import Flask, request, jsonify import timeapp = Flask(__name__)@app.route('/stream', methods=['GET']) def poll():# 假设这里有一个方法来检查是否有新数据# 为了示例,我们简单地模拟等待数据time.sleep(5) # 模拟处理时间或等待数据# 假设这是从某处获取的数据data = {"message": "Hello, this is a message!"}return jsonify(data) if __name__ == '__main__':app.run(debug=True)
客户端:
import requests import timedef long_poll(url, timeout=30):while True:time.sleep(1) # 模拟处理时间或等待数据try:response = requests.get(url, timeout=timeout)response.raise_for_status() # 如果请求失败,抛出HTTPErrordata = response.json()print("Received:", data)# 处理数据...except requests.exceptions.RequestException as e:print("Error:", e) # 可以在这里处理网络错误,比如重试或退出 # 立即再次请求 # 使用示例 long_poll('http://127.0.0.1:5000/stream')