Django文件上传永远与Phusion Passenger一起使用

时间:2015-06-15 09:51:55

标签: django apache file-upload passenger

我使用Passenger部署了一个Django应用程序(我没有选择mod_wsgi,因为mod_passenger已经存在并正在使用)。当我上传一个MP3文件(900 kB)时,谷歌浏览器会显示上传百分比,其达到100%的速度非常快,但结果页面却花了很长时间。数据库(包含文件的元数据)不显示任何上传的内容。

Django逻辑应该没问题,因为一切都在开发机器(内置Python服务器)中工作

我的配置:Django 1.8,Apache 2.4,Ubuntu 14.04

1 个答案:

答案 0 :(得分:2)

此处为乘客作者。尝试将passenger_log_level设置为更高的值,这可以让您深入了解发生这种情况的原因。

我不知道您使用的是哪个Passenger版本,但在版本5中,Passenger请求处理周期如下所示:

  1. Apache收到请求。标头完成后,它会将请求转发给Passenger服务器进程,同时将请求主体流式传输到Passenger服务器进程。
  2. Passenger服务器进程缓冲整个请求,包括正文。此缓冲发生在一个立即取消链接的临时文件中。
  3. 一旦缓冲完成,Passenger服务器进程会将请求(包括正文)转发到Django应用程序。乘客然后等待应用程序生成响应。
  4. Passenger服务器进程将来自Django应用程序的响应流式传输到Apache。这里没有阻塞缓冲。
  5. Apache将来自Passenger服务器进程的响应流式传输到客户端。这里没有缓冲。
  6. 如果日志级别足够高,您可以看到每个步骤花了多少时间,以便您可以查明罪魁祸首。

    请注意,早期版本的Passenger中的请求处理周期不同。我的建议仅适用于第5版。