【问题标题】:Is it possible to do a stream http request with Django?是否可以使用 Django 进行流式 http 请求?
【发布时间】:2018-01-29 20:45:50
【问题描述】:

我们正在开发需要能够上传 10+ gb 文件的软件。

我的退路只是简单地将数据分块并向 django 发出重复的 POST 请求,但是我想知道 Django 和 WSGI 是否可以处理单个 http 请求的“传输编码:分块”?

【问题讨论】:

    标签: django wsgi


    【解决方案1】:

    从技术上讲,WSGI 规范不允许分块的请求内容。然而,一些 WSGI 服务器支持一个非官方的扩展来指示正在提供具有未指定/可变长度的请求内容。这可用于处理分块请求内容,尽管您可能还需要配置 WSGI 服务器以允许分块请求。

    但问题是不确定 Django 是否支持这个非官方扩展。

    你应该研究的是 WSGI 的非官方 wsgi.input_terminated 扩展以及是否有任何 Django 插件支持它。然后确定您使用的 WSGI 服务器是否支持该扩展。更多最新版本的 mod_wsgi 和 uWSGI 支持它。我不确定 gunicorn。

    【讨论】:

      【解决方案2】:

      通常,Django 文档说明的方式就足够了:

        with open('some/file/name.txt', 'wb+') as destination:
              for chunk in request.FILES['file'].chunks():
                  destination.write(chunk)
      

      如果不行,你可以试试django-chunked-upload

      【讨论】:

        猜你喜欢
        • 2012-03-17
        • 2019-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-22
        • 2021-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多