在 Django 中,处理流式响应是通过中间件的 StreamingHttpResponseMiddleware 来实现的。Django 4.0 中引入了 StreamingHttpResponseMiddleware,它可以用于处理生成器(Generators)产生的流式响应。

以下是如何使用流式响应的示例:

1. 激活 StreamingHttpResponseMiddleware

确保在 settings.py 中的 MIDDLEWARE 设置中包含 StreamingHttpResponseMiddleware。通常,这个中间件在默认的 Django 4.0 项目中已经被激活了,但你可以确保它存在于你的中间件设置中。
# settings.py
MIDDLEWARE = [
    # 其他中间件...
    'django.middleware.http.StreamingHttpResponseMiddleware',
    # 其他中间件...
]

2. 使用流式响应生成器

在视图函数中,你可以返回一个生成器(Generator),该生成器会产生流式响应。生成器可以在迭代中产生响应的不同部分。
# views.py
from django.http import StreamingHttpResponse
import time

def stream_response(request):
    def generate_content():
        for i in range(5):
            time.sleep(1)  # 模拟生成内容的延迟
            yield f"Line {i + 1}\n"

    response = StreamingHttpResponse(generate_content(), content_type="text/plain")
    return response

在上述例子中,stream_response 视图函数返回一个 StreamingHttpResponse 对象,该对象使用 generate_content 生成器产生流式的文本响应。每次迭代都会产生一个新的文本行,模拟实时生成的内容。

确保你的视图函数返回一个 StreamingHttpResponse 对象,而不是常规的 HttpResponse 对象。

这种方法特别适用于处理需要实时或逐步生成的响应,例如长轮询、服务器推送等场景。确保查阅 Django 4.0 的官方文档,以获取更多关于流式响应和中间件的信息。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7225/Django