Flask 和传输编码:分块

2024-02-20

我们正在尝试让 Flask Web 服务正常工作,但我们在流式帖子方面遇到了一些问题 - 即当标头包含 Transfer-Encoding: chunked 时。

默认 Flask 似乎不支持 HTTP 1.1。有解决办法吗?

我们正在运行这个命令:

$ curl -v -X PUT  --header "Transfer-Encoding: chunked" -d @pylucene-3.6.1-2-src.tar.gz "http://localhost:5000/async-test"

针对此代码:

@app.route("/async-test", methods=['PUT'])
def result():
    print '------->'+str(request.headers)+'<------------'
    print '------->'+str(request.data)+'<------------'
    print '------->'+str(request.form)+'<------------'
    return 'OK'

这是卷曲输出:

$ curl -v -X PUT  --header "Transfer-Encoding: chunked" -d @pylucene-3.6.1-2-src.tar.gz "http://localhost:5000/async-test"
* About to connect() to localhost port 5000 (#0)
*   Trying ::1... Connection refused
*   Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 5000 (#0)
> PUT /async-test HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: localhost:5000
> Accept: */*
> Transfer-Encoding: chunked
> Content-Type: application/x-www-form-urlencoded
> Expect: 100-continue
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Content-Type: text/html; charset=utf-8
< Content-Length: 2
< Server: Werkzeug/0.8.3 Python/2.7.1
< Date: Wed, 02 Jan 2013 21:43:24 GMT
<

这是 Flask 服务器的输出:

* Running on 0.0.0.0:5000/ 
------->Transfer-Encoding: chunked
 Content-Length:
 User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
 Host: localhost:5000
 Expect: 100-continue
 Accept: */*
 Content-Type: application/x-www-form-urlencoded

 <------------
 -------><------------
 ------->ImmutableMultiDict([])<------------

它不是 Flask Python,而是 mod_wsgi。只有 mod_wsgi 版本 3.0+ 开始支持分块 http 传输。 Flask Python 内部使用 Werkzeug 工具包作为 mod_wsgi 的接口。如果您从 apt 源安装它,它可能是旧版本。

尝试编译最新版本的mod_wsgi,然后安装Flask框架,可能会解决问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask 和传输编码:分块 的相关文章

随机推荐

  • JavaScript 全局变量

    我应该如何创建一个变化变量作为全局变量 所以像这样 function globVar variable window variable 因此 通过这种方式 我也可以在自动模式下创建全局变量 而且我也可以更轻松地为自己创建它们 EDIT 例如
  • 尝试向 MYSQL 表添加新列时失去连接

    我正在尝试向拥有超过 2500 万行的 mysql 表添加一列 我正在运行 sql 命令 ALTER TABLE table name ADD COLUMN column name varchar 128 NULL DEFAULT NULL
  • 第三方API的Cors问题

    我很难从浏览器上的第三方 api 获取数据 https www coinexchange io api v1 getmarkets https www coinexchange io api v1 getmarkets I set mode
  • Git:管理我的应用程序的每个版本?

    我正在使用 git 和 github 并且刚刚完成了 iOS 应用程序的 1 0 版本 从这里开始 我想知道 git 如何才能最好地为我服务 我真的只是在这里寻找最佳实践 以及其他人推荐的管理主要版本的方法 我应该为每个新版本 例如 1 1
  • 从 vba 调用 MS SQL Server 标量 UDF

    我正在对连接到 SQL Server 2005 后端的 Access 2007 accdb 而不是 adp 前端进行编程 我怎样才能打电话scalar我的 vba 代码中的用户定义函数 Dim rst As ADODB Recordset
  • Pywinauto:无法将窗口带到前台

    致力于使用 Python 驱动的自动化工具 想象一下有一个正在运行的应用程序池 APPS POOL Chrome SomeApp Foo 该脚本在循环中运行 每秒 并且需要在它们之间随机切换 Init App object app appl
  • 递归推送所有子模块

    我编写了以下脚本来推送工作区中的所有更改 包括子模块和超级项目 然而 听起来有点奇怪 做我想做的事情是如此复杂 我缺少的还有更好的方法吗 bin bash if ne 1 then echo Illegal number of parame
  • 在 XPath 中使用翻译函数会出现错误

    我必须执行不区分大小写的 XML 搜索 我已经编写了运行良好的 XPath 表达式 但是当我使用translateXPath 表达式内的函数我收到错误 下面是运行良好的 XPath 表达式 string upper ABCDEFGHIJKL
  • 控制台中出现错误:无法加载资源:net::ERR_CONNECTION_RESET

    我刷新了我的应用程序页面并在控制台中收到此错误Failed to load resource net ERR CONNECTION RESET 我尝试重新安装 XAMPP 版本 但这对我不起作用 我认为你正在使用铬 问题是证书不匹配或证书过
  • Android 模拟器在 Ubuntu 11.10 上崩溃

    我在 Ubuntu 11 10 32 位 机器上安装了 Android SDK 我还安装了 Eclipse 3 7 和相关的 Android 开发插件 全部在 openjdk6 上 使用 eclipse 我成功创建了一个 Android 虚
  • Swift distance() 方法抛出致命错误:无法增加 endIndex

    我试图在字符串中找到子字符串匹配 并获取匹配的位置 我无法弄清楚以下代码有什么问题 let str1 hello let cmp let searchRange Range start str1 startIndex end str1 en
  • 浏览器中 bash 命令的代码块忽略路径

    我正在尝试开发一种用户友好的方式来设计 bash 命令的代码突出显示样式 我将使用以下示例来澄清问题这一页 https themeaningfulengineer github io Linux kernel in QtCreator 在下
  • IIS URL 重写规则

    我有一个 AngularJS 应用程序 它利用 URL 重写进行链接 我的重写规则如下
  • 移动设备注册 Spring Social

    我正在尝试将 Spring Social 用于我的 REST 服务和移动应用程序 我想知道最好的方法是什么 我打算使用linkedin google 登录和密码验证在我的里面移动应用 这个社交登录应该是连接到我的数据库中的用户 我的 Spr
  • 使用 Geopandas,如何选择不在多边形内的所有点?

    我有一个包含芝加哥地址的 DataFrame 我已将其地理编码为纬度和经度值 然后编码为 Point 对象 使 DataFrame 成为 GeoDataFrame 芝加哥以外的一小部分使用 LatLong 值进行了错误的地理编码 我有一个芝
  • cc1plus:错误:g++ 无法识别命令行选项“-std=c++11”

    我正在尝试使用编译g 以及 std c 11 or c 0x flags 但是 我收到这个错误 cc1plus error unrecognized command line option std c 11 g 版本 g GCC 4 1 2
  • settings.py 中模板文件夹的 Django 路径不正确

    我正在学习 Django 并且正在遵循学习 Django 1 11教程 这是我当前的项目树 manage py muypicky init py old settings py settings base py Contains the s
  • LazyColumn 删除项目时显示错误

    我正在创建一个应用程序 除其他外 它使用户能够添加消费者 然后稍后将其删除 消费者显示在卡片中 最后有一个删除按钮 添加消费者效果很好 但是 当我尝试删除消费者时 应用程序屏幕中删除的始终是消费者last one 我知道这不是一个逻辑实现错
  • Eclipse m2eclipse 从本地存储库获取依赖项

    我在我的机器上本地安装了依赖项 m2 repository blah blah blah 并且 m2eclipse 无法识别它们 我认为 m2eclipse 正在使用自己的 Maven 实例 有没有办法强制m2eclipse在osx中 使用
  • Flask 和传输编码:分块

    我们正在尝试让 Flask Web 服务正常工作 但我们在流式帖子方面遇到了一些问题 即当标头包含 Transfer Encoding chunked 时 默认 Flask 似乎不支持 HTTP 1 1 有解决办法吗 我们正在运行这个命令