Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要CGI(或其他与IIS 7兼容的解决方案)来处理*大规模*上传_Python_Perl_Iis_Iis 7_Cgi - Fatal编程技术网

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

Python 需要CGI(或其他与IIS 7兼容的解决方案)来处理*大规模*上传,python,perl,iis,iis-7,cgi,Python,Perl,Iis,Iis 7,Cgi,我们需要处理大量文件上传,而无需在IIS 7服务器上花费资源。为了强调这需要多么轻量级,让我们假设我们需要处理大小完全疯狂的文件上传,比如100GB上传,或者可以在不消耗额外资源的情况下持续运行很长时间的文件上传。基本上,我们需要一些东西,使我们能够控制文件从开始到结束的接收 一点背景: 我们使用ColdFusion作为服务器端处理器,但在处理超过1GB的上传时,它让我们失败了,我们已经用尽了配置选项。这背后有一个很长的故事,但本质上,如果.cfm页面(ColdFusion)是文件上载的目标,并

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

一点背景:

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

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

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

但在我们花了无数个小时讨论这个问题之前,我想我应该四处打听一下,看看是否有人知道这个问题的正确解决方案,在我们的案例中可能是可行的

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

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


提前感谢。

您无法从哑客户端获得可靠的多GB上传(例如浏览器和标准上传行为)。在那里,完成了,写了商业数字资产管理解决方案处理巨大的文件

在这个场景中,任何程度的可靠性的关键都是分块——您需要能够分块上传,将每个分块作为一个离散文件发送,并在服务器端重新组装

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


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

您无法从哑客户端获得可靠的多GB上传(例如浏览器和标准上传行为)。在那里,完成了,写了商业数字资产管理解决方案处理巨大的文件

在这个场景中,任何程度的可靠性的关键都是分块——您需要能够分块上传,将每个分块作为一个离散文件发送,并在服务器端重新组装

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


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

windows TCP堆栈仅限于4GB文件上载。这是不可能的。

windows TCP堆栈仅限于4GB文件上传。这是不可能的。

您想要的是WebDAV,而不是CGI。它提供了所有使文件传输不那么糟糕的功能,比如恢复和暂停。

您想要的是WebDAV,而不是CGI。它提供了所有使文件传输不那么糟糕的功能,比如恢复和暂停。

需要引用。我很难相信Windows无法传输大于4GB的文件,因为许多常见的文件类型(尤其是DVD图像)通常都要大得多。不知道TCP堆栈有什么限制,但FAT32无法处理大于4GB的文件,也许这就是他所说的。坦白地说,我不明白为什么TCP/IP协议栈会受到限制,因为事情是通过TCP/IP以数据包的形式发送的。为什么TCP/IP在读取和发送传输之前会关心剩余的传输量呢?需要引用。我很难相信Windows无法传输大于4GB的文件,因为许多常见的文件类型(尤其是DVD图像)通常都要大得多。不知道TCP堆栈有什么限制,但FAT32无法处理大于4GB的文件,也许这就是他所说的。坦白地说,我不明白为什么TCP/IP协议栈会受到限制,因为事情是通过TCP/IP以数据包的形式发送的。为什么TCP/IP在读取和发送之前会关心传输剩下多少?这是一个很好的建议,我会看一看,谢谢!这是一个很好的推荐,我来看看,谢谢!Java/Flash小程序很好。事实上,我正在客户端使用一个flashapplet(SWFUpload)。