为啥我的来自 Django 的 JSON 在大约 2.1MB 处被截断?

Posted

技术标签:

【中文标题】为啥我的来自 Django 的 JSON 在大约 2.1MB 处被截断?【英文标题】:Why is my JSON from Django being cut-off at about 2.1MB?为什么我的来自 Django 的 JSON 在大约 2.1MB 处被截断? 【发布时间】:2014-04-29 10:40:11 【问题描述】:

我有一个 Django 应用程序和一个包含 2.8MB JSON 的 Ajax 响应(对 POST 的) JSON 在离开服务器时是有效的,但是当浏览器获取它时(jQuery 1.9),它已被截断为大约 2.1MB(并且无法解析)。确切大小各不相同 - 请参阅下面的数字。

SENT:
2806260

RECIEVED:
2157907
2133383
2149795
2138351
2135271
2137015
2134291

较小的响应效果很好 - 只是这么大的响应会被截断。

收到的大小似乎总是一个奇数,也许我在这里发疯了,但它们似乎都是素数或大素数的倍数。这是真的吗?这是巧合吗?什么会截断我的 JSON?

(RHEL6.5 64bit, python2.6, django1.6, jquery1.9)

【问题讨论】:

一个 few 不同的 platforms 的上传限制约为 2MB。你能多谈谈你的服务器堆栈吗? (你没有说你使用的是什么网络服务器。) 我同意两位,一些平台有 ~2MB 的限制。但是您确定这真的是您的应用程序问题吗?也许您应该考虑较小的请求,以便给用户一些更好的“立即”响应。我希望您将大量数据转储到将要使用的客户端,这将浪费用户等待的时间。 当时我使用的是 Django 开发服务器。我同意,“2MB”这个数字似乎很常见,但如果它是堆栈中某个点的“限制”,为什么接收的字节数会像它一样相差几千? 是的,发送 2MB 是相当多的,但这是一个内部应用程序,而不是公共网站。我在浏览器中的数据上做一个花哨的过滤器。如果这是一个公共网站,我不会这样做。 【参考方案1】:

没有计时数据,但看起来这可能与超时有关。 检查获得截断响应需要多长时间,并在服务器端寻找类似的超时。

【讨论】:

以上是关于为啥我的来自 Django 的 JSON 在大约 2.1MB 处被截断?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的夹具没有安装在 django 项目上?

为啥 Django fcgi 会死?我怎样才能知道?

Django 解析 json(来自 Webhooks)

为啥来自 URL 的参数在 Django 中返回为未定义?

从数组中删除项目(来自 API 的带有 JSON 的 Restkit 项目)

为啥我的 API 和 JSON 应用无法在 Android Studio 中运行