python网络编程之http longpull

服务端:

from flask import Flask, request, jsonify
import time
    
app = 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 time

def long_poll(url, timeout=30):
    while True:
        time.sleep(1) # 模拟处理时间或等待数据
        try:
            response = requests.get(url, timeout=timeout)
            response.raise_for_status() # 如果请求失败,抛出HTTPError
            data = response.json()
            print("Received:", data)
            # 处理数据...
        except requests.exceptions.RequestException as e:
            print("Error:", e)
# 可以在这里处理网络错误,比如重试或退出
# 立即再次请求
# 使用示例
long_poll('http://127.0.0.1:5000/stream')

 

服务端输出:

 

 

客户端输出:

 

posted @ 2024-12-23 21:02  河北大学-徐小波  阅读(11)  评论(0编辑  收藏  举报