首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何测试Flask应用程序是否正确处理中断的上传?

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

Stack Overflow用户
提问于 2018-08-12 13:16:36
回答 1查看 154关注 0票数 0

我正在开发一个API,当用户上传一个文件时,它会动态地处理这个文件,从中提取一些数据。该文件可以相当大(高达5GB),并且不会在服务器上持久化。

我有很多使用由水瓶提供的通用测试设施的系统测试。我也知道如何将测试上传为一个文件

但是,有一种情况我还没有在系统测试中讨论过。如果用户开始上传一个文件,然后将连接放在中间,而服务器正在忙着从它已经收到的数据中提取数据,那该怎么办?

我通过启动一个大文件并在中间终止客户机来玩curl。API的行为似乎符合我的预期。但我更喜欢完全自动化的方法。

我怎么能这么做?有什么东西可以让我做这样的测试吗?如果不是,什么是可行的办法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-25 05:20:45

在搜索了一段时间之后,似乎没有任何一个测试功能,或者请求库可以帮助我。因此,解决方案是使用Python套接字执行手动HTTP请求。

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

  • --trace-ascii -使得显示curl发送和接收的所有内容成为可能。非常方便。
  • --limit-rate 3K帮助模拟了一个非常慢的连接,结合gunicorn (gunicorn --timeout 2 ...)中的超时配置,可以再现客户机启动POSTing文件,然后挂起太长时间的情况。

从那里开始,我只需复制curl的行为,因为它在终端中将它报告给使用socket.socket()的测试代码。

然后,通过线程将测试代码流到服务器,同时定期暂停并将其进度报告给主线程。当文件的一部分(但不是全部)被发送时,主线程将突然终止正在流文件的线程。然后,它就会等待gunicorn超时,然后与数据库交互,以检查处理是否按预期进行。

我不知道的一件事是,Werkzeug缓冲请求,这是完全不直观的,因为在使用werkzeug.formparser.parse_form_data()时,每次遇到换行符时都会调用传递给Werkzeug的流的write方法。诀窍是,它首先被缓冲,并且只有当缓冲区已满时,才会开始为缓冲区中的数据调用write。最初,我只发送包含几千字节的文件,所以看起来Werkzeug只是在内存中读取整个文件,然后才允许我处理它。当我开始发送大于其65,536字节缓冲区的文件时,我注意到在缓冲区填充后,我在突发中得到了对write的调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51812927

复制
相关文章
Koa/Express+TypeScript扩展类型
在我们使用Koa或者Express进行开发时会经常使用中间件进行访问权限过滤或者属性加工,很多时候我们需要把中间件的属性传递给下一个路由函数,但是因为TS类型的限制我们无法直接获取扩展的元素或者无法获取正确的类型。本文讲解了在使用Koa/Express+TypeScript开发时如何扩展中间件上的属性。
用户6256742
2022/07/11
8280
Koa/Express+TypeScript扩展类型
TypeScript入门——扩展类型之枚举
在上一篇文章中聊到了很多TS基础类型,那为什么又出现了扩展类型枚举,我们都知道任何东西都不是平白无故就出现的,都是为了解决特定的问题。枚举只是扩展类型其中之一,比如说还有类型别名,接口,类
程序员法医
2022/08/11
9970
TypeScript入门——扩展类型之枚举
TypeScript系列教程四《扩展类型》
TypeScript 最好玩的应该就是类型系统,随意组合创造,提供基础联合类型、交叉类型,还有一系列的高级函数可以玩转类型。
星宇大前端
2021/07/19
1.1K0
TypeScript系列教程四《扩展类型》
《现代Typescript高级教程》扩展类型定义
在 TypeScript 中,我们可以通过声明文件(.d.ts 文件)来为现有的 JavaScript 库提供类型定义,或者为现有的类型添加额外的属性和方法。这个过程通常被称为“类型声明扩展”。在这篇文章中,我们将详细探讨如何通过声明文件扩展类型定义。
linwu
2023/07/27
6110
TypeScript中的类型
基本类型布尔类型 (boolean)布尔类型表示一个值为真或假的逻辑值。let isDone: boolean = false;数字类型 (number)数字类型表示整数或浮点数。let count: number = 10;let price: number = 3.99;字符串类型 (string)字符串类型表示一串字符。let message: string = "Hello, TypeScript!";数组类型 (array)数组类型表示一个元素的集合。let numbers: number[] =
堕落飞鸟
2023/05/22
1.9K0
TypeScript 在 Vue2 中的类型声明问题
最近在一个新项目中,尝试了vue2+typescript的组合,碰到一个问题,在data属性中,我怎么声明一个变量的类型。
2022/02/25
4.7K0
TypeScript中的类型断言
本文是关于 TypeScript 中的 type assertions 的,它与其他语言中的类型强制转换有相似之处,并通过 as 运算符执行。
疯狂的技术宅
2020/06/19
3.8K0
实现TypeScript中的互斥类型
有这样一个对象,它有两个属性:name与title,在赋值的时候这两个属性只有一个能出现,例如:name出现的时候title就不能出现,title出现的时候name就不能出现。
神奇的程序员
2022/04/11
3.1K0
实现TypeScript中的互斥类型
TypeScript 中的数组类型定义
在 TypeScript 中声明和初始化数组也很简单,和声明数字类型和字符串类型的变量也差不多,只不过在指定数组类型时要在类型后面加上一个中括号 []
Qwe7
2022/03/19
5.4K0
【TypeScript 演化史 -- 8】字面量类型扩展 和 无类型导入
在我上一篇更好的类型推断的文章中,解释了 TypeScript 如何用 const 变量和 readonly 属性的字面量始化来推断字面量类型。这篇文章继续讨论这个,扩展和非扩展字面量类型之间的区别。
前端小智@大迁世界
2022/06/15
1K0
【TypeScript 演化史 -- 8】字面量类型扩展 和 无类型导入
Typescript 中,这些类型工具真好用
你是否曾经用 TypeScript 写代码,然后意识到这个包没有导出我需要的类型,例如下面这段代码提示 Content 在 @example 中不存在:
前端修罗场
2023/10/07
2180
Typescript 中,这些类型工具真好用
Typescript中的复杂类型声明
Typescript为javascript加入了众多类型声明语法,灵活使用可使代码变得健壮,不严谨的类型声明会带来后期的维护麻烦。本篇假设读者已经学会ts的基础类型声明语法,包括type、interface、extends和泛型,在此基础上,聊一聊一些更加复杂的类型声明场景以及解决办法。
腾讯IVWEB团队
2020/06/28
7.2K1
03-TypeScript中的强类型
在js中不能定义类型,而是根据赋值后,js运行时推断类型。在ts中支持强类型,强类型包括string、number(浮点型,不是整型)、boolean、any(任意类型)、Array<T>、自定义类型(枚举、类等) 除了能给变量申明为强类型,参数也可以申明为强类型,方法也可以定义返回类型,方法如果没有返回值,定义为void类型。 var username:string; var age:number; var descrption:any; var isman:boolean; var schools:Ar
用户1910585
2018/05/04
1.9K0
PHP中Redis扩展无法加载问题
phpredis编译出来的redis.so也需要拷贝到"/usr/lib64/php/modules/"中;
叫我可儿呀
2019/11/16
2K0
TypeScript 类型保护
这时就需要用到类型保护,类型保护允许你使用更小范围下的对象类型,常见的类型保护如下:
Leophen
2020/08/05
7190
TypeScript 类型保护
TypeScript 类型系统
针对 JavaScript 上面的问题,聪明的同学就想那我们就给 JavaScript 加个类型吧,和 Java 一样,能够对变量的类型进行定义,这个想法就是 TypeScript 的类型系统, 在很大程度上弥补了 JavaScript 的带来的困惑。
HoneyMoose
2021/11/16
8570
TypeScript 类型系统
TypeScript函数类型
通过如下代码我们实现了一个返回值为number类型的方法,同时我们也对返回值和参数进行了约束
HueiFeng
2020/04/09
7560
TypeScript函数类型
通过如下代码我们实现了一个返回值为number类型的方法,同时我们也对返回值和参数进行了约束
HueiFeng
2020/04/10
7920
TypeScript 类型系统
TypeScript 的学习资料非常多,其中也不乏很多优秀的文章和教程。但是目前为止没有一个我特别满意的。原因有:
lucifer210
2020/08/20
1.4K0
TypeScript 类型系统
点击加载更多

相似问题

TypeScript在扩展语法函数调用中无法推断数组类型

21

在Typescript中扩展泛型类型

141

无法在TypeScript中扩展快速请求

434

在Typescript中扩展外部类型声明

110

在TypeScript中扩展特定类型的数组

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文