Flask——基于python完整实现客户端和服务器后端流式请求及响应

5 篇文章 0 订阅
本文档详细介绍了如何在本地客户端使用Python的requests库与Flask服务器实现流式数据传输,包括参数设置、数据生成和接收过程,以及Flask服务器端的相应处理方法。
摘要由CSDN通过智能技术生成

看了很多相关博客,但是都没有本地客户端和服务器后端的完整代码示例,有的也只说了如何流式获取后端结果,基本没有讲两端如何同时实现流式输入输出,特此整理总结,给大家交流学习和使用!

本地客户端

  • requests.post得到流式回复的重要参数:
    • stream:需要设置为True;
    • response.iter_content:使用该函数接收返回的流式数据。
import requests
import time
import json

def generate_stream_data():
    # 假设这是要发送的文本列表
    is_end = False
    lines = ["Hello", "world", "this", "is", "a", "stream", "of", "text"]
    for line in lines:
        print(line)
        if lines.index(line) == len(lines) - 1:
            is_end = True
        yield json.dumps({'line': line, 'is_end': is_end}) + '\n'
        time.sleep(0.5)
        # 模拟数据处理时间

def get_stream_response(response):
    # 流式接收response
    rec_data_list = []
    temp_data = ''
    for chunk in response.iter_content(chunk_size=1):
        temp_data += chunk.decode('utf-8')
        if temp_data.endswith('\n'):
            temp_json = json.loads(temp_data)
            rec_data_list.append(temp_json)
            print(temp_data)
            temp_data = ''
            if temp_json['is_end']:
                break
    print(rec_data_list)
    print("----------------------------")
    print(temp_data)
    return rec_data_list

def stream_upload(url):
    
    # 流式接收response
    response = requests.post(url, data=generate_stream_data(), stream=True)
    
    final_response = get_stream_response(response)
    
    return final_response

url = 'http://127.0.0.1:5000/stream'
response = stream_upload(url)

Flask服务器后端

  • flask.request流式获取数据::
    • 使用request.stream.read读取数据,而不是get_data()等一次性函数。
from flask import Flask, Response, request
import time
import json
import requests

app = Flask(__name__)

def process_stream_data(stream_data):
    # 假设这是要发送的数据
    print("开始生成新的数据流")
    is_end = False
    print(stream_data)
    for idx, line in enumerate(stream_data):
        if idx == len(stream_data)-1:
            is_end = True
        print(line)
        yield json.dumps(line)+"\n"
        time.sleep(0.5)
        # 模拟数据处理时间

def get_stream_request(chunk_size=1):
    req_data_list = []
    temp_data = ''
    while True:
        chunk = request.stream.read(chunk_size)
        temp_data += chunk.decode('utf-8')
        if temp_data.endswith('\n'):
            temp_json = json.loads(temp_data)
            req_data_list.append(temp_json)
            print(temp_data)
            temp_data = ''
            if temp_json['is_end']:
                return req_data_list

@app.route('/stream', methods=['POST'])
def stream_text():
    
    data = get_stream_request()

    print("----------------------------")
    
    return Response(process_stream_data(data))

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000, debug=True)

客户端/服务器端流式接收[打字机]效果

请添加图片描述

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用 Python Flask 搭建 web 服务器客户端,下面是一个简单的示例: 1. 安装 flask 包:pip install flask 2. 创建一个名为 app.py 的文件,并在其中编写 flask 代码 3. 在终端中运行 python app.py 命令,启动服务器 4. 打开浏览器,输入 http://localhost:5000/ 即可访问服务器客户端 ### 回答2: 搭建 Python Flask Web 服务器客户端的步骤如下: 1. 安装 Python:首先需要在计算机上安装 Python。可以从官方网站 (https://www.python.org/) 下载并安装适合你操作系统的 Python 版本。 2. 安装 Flask:使用命令行或终端运行以下命令安装 Flask 框架:$ pip install flask 3. 引入 Flask:在 Python 脚本中引入 Flask 模块:from flask import Flask 4. 创建 Flask 应用:使用 Flask 类创建一个应用对象,并将其赋值给一个变量,例如:app = Flask(__name__) 5. 创建路由:使用装饰器语法定义不同的路由。路由是指应用中的不同 URL 与对应的函数之间的映射关系。例如:@app.route('/') def home(): return 'Welcome to My Python Flask Web Server!' 6. 运行服务器:在程序的末尾添加以下代码,以在本地主机上运行 Flask 服务器:if __name__ == '__main__': app.run() 7. 测试服务器:在命令行或终端中运行 Python 脚本,如:$ python your_script.py。将会显示服务器正在运行的信息。 以上是搭建 Python Flask Web 服务器的步骤。接下来,可以编写客户端代码来与服务器进行通信。客户端可以使用 requests、urllib 或其他 HTTP 请求库进行发送 GET、POST 等请求,并接收服务器响应。 例如,使用 requests 库发送 GET 请求: import requests url = 'http://localhost:5000/home' response = requests.get(url) print(response.text) 这是一个简单的例子,展示了如何使用 Python Flask 搭建 Web 服务器和编写客户端代码来与服务器进行通信。具体的实现方式还可以根据实际需求进行调整和扩展。 ### 回答3: Python flask 是一个使用 Python 编写的轻量级 Web 框架,其简洁易用的特点使得搭建 Web 服务器客户端变得非常方便。 首先,我们需要安装 Flask 模块。可以使用 pip 命令来安装,如下所示: ``` pip install flask ``` 在 Python 脚本中,我们需要导入 Flask 模块,并创建一个应用实例,如下所示: ```python from flask import Flask app = Flask(__name__) ``` 接下来,我们可以为应用添加路由和视图函数。路由是指 URL 和视图函数之间的映射关系。例如,我们可以为根路径 "/" 添加一个视图函数,如下所示: ```python @app.route('/') def hello_world(): return 'Hello, World!' ``` 在视图函数中,我们可以使用 return 语句返回给客户端一个字符串作为响应。 最后,我们需要运行应用来启动 Web 服务器。可以在脚本的末尾添加以下代码,来指定服务器运行的 IP 地址和端口号: ```python if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) ``` 这样,我们就完成了一个简单的 Flask Web 服务器的搭建。 对于客户端,我们可以使用浏览器作为客户端来访问刚刚搭建的 Web 服务器。只需要在浏览器中输入服务器的 IP 地址和端口号,例如 "http://127.0.0.1:5000/",即可访问服务端返回的结果。 另外,我们也可以使用 Pythonrequests 模块作为客户端,通过发送 HTTP 请求来获取服务器响应。可以使用以下代码示例来发送 GET 请求: ```python import requests url = 'http://127.0.0.1:5000/' response = requests.get(url) print(response.text) ``` 以上就是使用 Python Flask 搭建 Web 服务器客户端的简要步骤。通过 Flask,我们可以方便地搭建出一个满足特定需求的 Web 应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值