gpt4 book ai didi

python - 连接在(大)文件上传时重置

转载 作者:太空狗 更新时间:2023-10-30 00:18:11 28 4
gpt4 key购买 nike

所以我在 Pylons 中遇到了一个相当棘手的文件上传问题,我希望有人可以帮助我。最初我发布了问题 here认为这是 Pylons 的问题,但后来我得出结论,问题是由于服务器(即粘贴)引起的,并且我已经准确地找到了问题发生的位置,但不确定如何解决它。行为如下。我有一个 Pylons Web 应用程序,我通过粘贴服务。一个应用程序允许用户将文件上传到系统,有时这些文件可能相当大(> 50mb)。在此类上传过程中,服务器偶尔会重置连接(即,在 Chrome 中,错误显示为“错误 101 (net::ERR_CONNECTION_RESET):连接已重置。”)这总是发生,仅大约 50% 的时间使用较大的文件。

在这些情况下,服务器从不将 POST 交给应用程序级别。没有抛出异常(至少,我能找到)。我已将问题缩小到 cascade.py(特别是从 httpserver.py 调用的 wsgi_application 方法)。来自后者:

result = self.server.wsgi_application(self.wsgi_environ, self.wsgi_start_response)

在cascade.py的call函数中,文件好像是写入了一个临时文件。相关循环开始于:

while copy_len > 0:

然后它将 block 一个一个地写入打开的文件。这些写入都不会单独抛出异常。但是,服务器通常会在这些写入期间简单地“消失”,看似随机(时间似乎也与此无关)。因此,如果我打印出正在减少的 copy_len 大小,我会看到它减少了一个点,然后服务器突然发送了一个“连接重置”(或者至少客户端认为它发送了)和方法似乎已退出(copy_len 停止打印,就好像循环已退出,尽管它不是 0)。

我完全被难住了,因为 1) 这只会偶尔发生,并且 2) 我似乎无法追踪到实际的错误/异常——它只是有点……死了。

如果重要的话,我正在运行 paste 1.7.3、Python 2.7 和 Fedora OS。有没有人对可能发生的事情以及我如何解决这个问题有任何见解?非常感谢您的帮助。

最佳答案

想到两个想法......

  • 使用另一个更强大的网络服务器进行测试,例如 nginx .如果需要,它可以同时运行。查看问题是否仍然存在。据我所知,虽然 paste 可以处理网络应用程序,但它并不意味着可以处理大量文件传输。
  • 你在使用 Chunked Transfer Encoding在上传期间?

关于python - 连接在(大)文件上传时重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7258245/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com