代码之家  ›  专栏  ›  技术社区  ›  Arseni Mourzenko

如何测试Flask应用程序是否正确处理中断的上载?

  •  0
  • Arseni Mourzenko  · 技术社区  · 7 年前

    我有很多系统测试 common test facility provided by Flask . 我也知道如何 make the test upload a file

    然而,有一个案例我还没有被系统测试所覆盖。如果用户开始上传一个文件,然后在中间断开连接,而服务器正忙于从已经接收到的数据中提取数据,会怎么样?

    我玩过 curl

    我该怎么做?烧瓶里有什么东西可以让我做这样的测试吗?如果没有,有什么可行的方法?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Arseni Mourzenko    7 年前

    经过一段时间的寻找,似乎烧瓶的测试功能,或 Requests library 可以帮我。因此,解决方案是使用 Python's sockets

    为了节省时间,模拟请求并研究实际发送的内容的最简单方法是使用 curl 有几个附加参数:

    • --trace-ascii - 使一切都能显示出来 发送和接收。很方便。

    • --limit-rate 3K 帮助模拟一个非常慢的连接,与超时配置一起 gunicorn ( gunicorn --timeout 2 ...

    从那以后,我只需要模仿 卷曲 当它在终端向正在使用的测试代码报告时 socket.socket() .

    我不知道的一件事是Werkzeug缓冲了请求,这绝对不是直观的,因为在使用 werkzeug.formparser.parse_form_data() write 每次遇到换行符时都会调用传递给Werkzeug的流。诀窍是它首先被缓冲,只有当缓冲区满了, 开始调用缓冲区中的数据。最初,我只发送包含几千字节的文件,所以看起来Werkzeug只是在读取 在记忆里,然后才让我处理它。当我开始发送大于65536字节缓冲区的文件时,我注意到 在缓冲区填满后的突发中。

    推荐文章