python - 如果响应太大,Django Rest Framework 无法返回响应。http 代码 0
问题描述
我们正在 Django 上构建 API 并使用 Django Rest Framework。此 API 位于两台服务器之间,因此它接收来自服务器 A 的请求,向服务器 B 发出请求,格式化来自服务器 B 的响应,并使用格式化数据响应服务器 A。
视图处理程序扩展了 DRF 的 ApiView 类,响应也是 DRF 的 Response 对象。
这是 views.py 中的伪代码,用于透视:
class dummy(APIView)
# define auth here
def get(request):
# handle the request from server A
# get the content here, from server B
# content is a list of up to 1028 elements
response = Response({'status':'success','content':content}, status=200)
return response <--- fails here if content length > 200 elements
内容是 dicts 列表,每个 dicts 包含 4 - 5 个键/值对,如果这个列表的长度小于 200 个元素,则响应通过就好了,但是任何超过 200 个元素将导致响应代码 0 并且没有解释发生了什么的错误消息,除了broken pipe
来自服务器 A的错误。
我们将来自服务器 A 的请求的超时时间增加到 30 秒,以确保它没有任何改变,错误的发生速度也比 30 秒快得多,因此我们知道服务器 A 并没有认为 API 超时。
服务器 B 的响应完全符合预期,我们没有从中得到任何错误。
这只是传递的文本,没有长字符串或编码数据,Django Rest Framework 是否有响应大小限制?我找不到任何参考,我只看到了请求大小限制。
我们正在努力避免分页,但我知道如果所有其他方法都失败了,这是一个选项,让我感到惊讶的是,最多 5000 行文本的响应可能会破坏 DRF。
解决方案
推荐阅读
- vba - 使用 Document.Paragraphs.Add() 创建多个 Word 段落
- asp.net - 从 3.5 升级到 4.0,asp 菜单悬停在不工作
- excel - 使用 Openpyxl 将数据框附加到现有 Excel 工作表
- airflow - 创建 dag 运行时将参数传递给 Airflow Experimental REST api
- python - 如何整合所有区间?
- c# - WCF 服务仅返回基类
- amazon-web-services - AWS Route53 按过期搜索/排序域
- javascript - 隐藏/显示按钮在 jquery 中不起作用
- docker - docker pull 中发生错误
- c# - 更改分离子对象的父级 - 实体框架 6