如何开发django-> pylons文件上传工具?

时间:2011-01-17 17:01:26

标签: python django web-services web-applications pylons

我有一个Pylons应用程序,它为基于Django的前端提供Web服务。我需要能够提供文件上传并下载到应用程序的用户。

基本上,他们在前端上传一个文件(可能几乎任何东西,通常都很大)。该文件从client =>传输django web server => pylons app server =>内部文件服务器。

内部文件服务器不提供API;将文件放在上面的唯一方法是使用scp。所以,没有流媒体与pylons相关=> fserv步骤。此外,无法从django应用程序所在的网络层访问fserv。

在相反的过程中,fserv为其文件提供HTTP访问方法,Web服务器仍然无法访问,因此我需要连接来自fserv =>的流。挂架=> django的。

这个过程的Pylons方面是什么样的?如何最小化这些文件操作的延迟?我知道我已经停留在写操作上,因为我必须在收到它后发送整个文件。

此外,这个过程的Django方面是什么样的?如何将文件上传到流式上传服务,如何下载?

为了尽量减少争论,请假设我无法更改系统的主要组件,并且防火墙和管理员策略阻止我使用共享网络资源来移动文件。

1 个答案:

答案 0 :(得分:1)

你不必一次陷入scp的上传文件。 scp可以从标准输入中获取数据,而在python中,你可以很好地控制子进程的输入,输出和错误管道。

对于Pylons部分,我想,问题可能是“如何使用Pylons 进行流式传输HTTP上传/下载”?

流式下载,其中Pylons控制器提供大型文件(或充当文件服务器前的代理)很容易。请参阅Pylons Wiki上的“Streaming Content to Browser”(链接是google缓存,因为wiki似乎已经停止了ATM)。

Pylons中的流式上传更加棘手,主要问题又是中间件中的缓冲区。还有一篇关于Pylons Wiki的文章:“Hacking Pylons for handling large file upload”(再次谷歌缓存)。