python - 需要 CGI(或与 IIS 7 兼容的其他解决方案)来处理*大量*上传

标签 python perl iis iis-7 cgi

我们需要处理大量 文件上传,而无需在 IIS 7 服务器上花费资源。为了强调这需要多么轻量级,假设我们需要处理大小非常疯狂的文件上传,例如 100GB 上传,或者可以持续运行很长时间而不消耗额外资源的文件。基本上,我们需要一些东西让我们能够控制文件从开始到结束的接收过程。

一点背景:

我们使用 ColdFusion 作为服务器端处理器,但它在处理超过 1GB 的上传时失败了,我们已经用尽了配置选项。这背后有一个很长的故事,但本质上,如果 .cfm 页面 (ColdFusion) 是文件上传的目的地并且超过 1GB,它会给出 503 错误......即使目标文件不存在。很明显,仅仅通过告诉服务器我们打算处理带有 .cfm 页面的文件就发生了太多事情。

我们怀疑这是由于 Java 限制造成的,因为服务器(或者实际上是本例中的工作站)没有显示任何 CPU 或内存负载迹象。由于我们的内存有限,而且这个网站是为大量并发上传而设计的,我们不能相信简单地提高虚拟机内存使用量,特别是因为目前这根本不起作用,即使对于单个连接也是如此......更不用说了上线时我们期望的数百个并发连接。

因此,我们着手使用 CGI 编写专门的解决方案,该解决方案将仅处理文件上传。基本上,我们需要在服务器端进行控制,而 ColdFusion 或 ASP.NET 无法做到这一点,因为这些技术在幕后自行完成了很多事情,而没有为我们提供所需的控制。他们总是出于一个可以说是显而易见的原因而以一种或另一种方式花费太多资源;我们正在尝试做的事情完全是疯狂的,而不是这些技术的预期功能。这就是为什么我们需要一个通过 CGI 的专门 uploader 来绕过所有不断阻碍的 ColdFusion/ASP.NET 魔法,希望它能为我们提供所需的控制。

但在我们为此花费无数时间之前,我想我应该四处打听一下,看看是否有人知道对这个问题可能适用于我们的情况的适当解决方案。

这里唯一真正的限制是它必须是 CGI,并且必须在 IIS 7 上运行,因此是 Windows“服务器”环境。我们同意它是用 Python、Perl 编写的,给它起个名字……只要它可以作为 CGI 运行,但它必须作为 CGI 运行……当然,除非有人对如何做到这一点有更好的想法。

所以神奇的问题是;是否有 CGI 解决方案已经做到了这一点,或者我们是否坚持自己编写它,希望没有其他人已经做到这一点的原因是除了不可能之外的其他原因?

提前致谢。

最佳答案

您不会从一个愚蠢的客户端(例如浏览器和标准上传行为)获得可靠的多 GB 上传。在那里,完成了,编写了处理大量文件的商业数字 Assets 管理解决方案。

在这种情况下,任何程度的可靠性的关键是分块 - 您需要能够对上传进行分块,将每个分块作为离散文件发送,然后在服务器端重新组合。

您的客户限制是什么(如果有)?你可以使用java小程序吗?你甚至可以有一个客户端应用程序吗?

基于浏览器的解决方案的一个可能起点是 jupload opensource project但还有很多其他的。

关于python - 需要 CGI(或与 IIS 7 兼容的其他解决方案)来处理*大量*上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5479387/

相关文章:

python - 使用 Python [摘要] 读取 wav 文件的最简单方法是什么?

python - Pandas Excelwriter 内存错误

html - 从字符串中提取 HTML 标签名称

regex - Perl:根据键将散列分成几个?

perl 后台进程

iis - 使用 URL Rewrite 更改 URL 的一部分

python - 如何在机器学习中使用cross_val_score进行预测

python - 提高spark sql的并行性

iis - 使用 Microsoft.Web.Administration 获取远程应用程序池状态

asp.net - IE10无法播放MP4