HTTP响应中的more_body是什么?

问题描述 投票:0回答:1

使用 ASGI 框架 Starlette,它具有流式响应,利用 HTTP 响应中的一些

more_body
参数来表示块是否已完成流式传输(源代码)。 Starlette 有一篇文章谈到了这一点:Working with ASGI and HTTP

这个

more_body
技术是使用HTTP的标准设计模式吗,比如服务器发送事件(SSE),还是Starlette特有的?

http server-sent-events web-frameworks starlette asgi
1个回答
0
投票

Starlette 流式响应中使用的

more_body
参数不是标准 HTTP 功能,而是 ASGI(异步服务器网关接口)规范的一部分。它特定于使用 ASGI 的异步 Python Web 框架,例如 Starlette。

more_body (bool)
– 表示是否有其他内容(作为请求消息的一部分)。

  • 如果
    True
    ,消费应用程序应该等待,直到它获得一个将此设置为
    False
    的块。
  • 如果
    False
    ,则请求已完成并且应该得到处理。选修的;如果缺失则默认为 False。

在 ASGI 和 Starlette 的上下文中,

more_body
用于指示响应是否完整或是否需要更多数据。当响应被传输时,将
more_body
设置为
True
告诉 ASGI 服务器即将有更多数据块。发送整个响应后,应将
more_body
设置为
False
,表示响应结束。

该机制不同于服务器发送事件 (SSE) 等标准 HTTP 功能。 SSE 是一种标准,允许服务器通过单个长期 HTTP 连接将更新推送到客户端。相比之下,

more_body
方法是一种特定于 ASGI 的方法,用于在框架的异步处理模型中管理流响应。

© www.soinside.com 2019 - 2024. All rights reserved.