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')
服务端输出:
客户端输出:
本文来自博客园,作者:河北大学-徐小波,转载请注明原文链接:https://www.cnblogs.com/xuxiaobo/p/18624936