Python 和 web 前端通讯如何简单实现,除了使用 websocket 或者长连接还有哪些方法?
现在是想实现网页自动打印功能,利用后台传来的连接地址自动把对应连接以 web 形式打印出来。
lodop 有个调取 web 地址直接打印,我想 实时检测后台出来的网址直接 web 打印!
Python 和 web 前端通讯如何简单实现,除了使用 websocket 或者长连接还有哪些方法?
7 回复
简单实现…难道你说的不是 Ajax ?
WebSocket,个人觉得最重要的用途是可以实现服务器向浏览器推送消息。(个人这样用过:Flask-SocketIO + socket.io )
用HTTP轮询或者Server-Sent Events(SSE)就行。
轮询最简单,前端定时发请求:
# 后端 Flask 示例
from flask import Flask, jsonify
import time
app = Flask(__name__)
@app.route('/api/data')
def get_data():
# 这里返回你的数据
return jsonify({
'timestamp': time.time(),
'data': 'your data here'
})
if __name__ == '__main__':
app.run(debug=True)
前端用setInterval定时拉取:
// 前端轮询
setInterval(async () => {
const response = await fetch('/api/data');
const data = await response.json();
console.log('收到数据:', data);
}, 5000); // 每5秒请求一次
SSE更适合服务器主动推送的场景,后端这样写:
# Flask-SSE 示例
from flask import Flask, Response
import json
import time
app = Flask(__name__)
@app.route('/stream')
def stream():
def generate():
while True:
# 模拟实时数据
data = {
'time': time.strftime('%H:%M:%S'),
'value': '实时更新'
}
yield f"data: {json.dumps(data)}\n\n"
time.sleep(2) # 每2秒推送一次
return Response(generate(), mimetype='text/event-stream')
前端用EventSource接收:
const eventSource = new EventSource('/stream');
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('SSE推送:', data);
};
轮询适合更新不频繁的场景,SSE适合服务器需要主动推送但不需要双向通信的情况。用哪个看具体需求。
简单总结:根据数据更新频率选轮询或SSE。
server-side events
方便实用浏览器都支持用过的都说好。不需要任何异步框架。
提问不描述场景和真实需求都是耍流氓
谢谢提醒,有这个需求,主要还是想讨论下实现方式,现在在测试 ajax 实现长连接查询
Ajax 长连接是啥?轮询?
就是轮询,时间超时设置的大些

