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

2024-05-02 21:35:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我们需要处理大量的文件上传,而不需要在iis7服务器上花费资源。为了强调这需要多么轻量级,让我们假设我们需要处理大小完全疯狂的文件上传,比如100GB的上传,或者可以在不消耗额外资源的情况下持续运行很长时间的文件上传。基本上,我们需要某种东西来控制文件从开始到结束的接收过程。在

一点背景知识:

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

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

所以我们要用CGI编写一个专门的解决方案,只处理文件上传。基本上,我们需要服务器端的控制,这是ColdFusion或ASP.NET因为这些技术在幕后独立完成了很多事情,却没有给我们所需的控制。他们总是以一种或另一种方式花费太多的资源,原因可以说是显而易见的;我们试图做的是完全疯狂的,而不是那些技术的预期功能。这就是为什么我们需要一个专门的上传程序通过CGI绕过所有的ColdFusion/ASP.NET魔法一直挡在路上,希望它能给我们所需的控制。在

但在我们花了无数个小时在这个问题上之前,我想我应该问问周围的人,看看是否有人知道这个问题的适当解决方案在我们的案例中可能是可行的。在

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

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

提前谢谢。在


Tags: 文件内存服务器net服务器端原因资源解决方案
3条回答

windows TCP堆栈仅限于4GB文件上载。再多也不可能了。在

你想要的是WebDAV,而不是CGI。它提供了所有使文件传输不再糟糕的优点,比如恢复和暂停。在

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

在这种情况下,任何程度的可靠性的关键都是分块——您需要能够分块上传,将每个块作为一个独立的文件发送,并在服务器端重新组装。在

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

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

相关问题 更多 >