Phusion Passenger 永远无法上传 Django 文件
Django file upload took forever with Phusion Passenger
我有一个使用 Passenger 部署的 Django 应用程序(我没有选择 mod_wsgi 因为 mod_passenger 已经存在并且正在使用)。当我上传一个 MP3 文件 (900 kB) 时,Google Chrome 显示上传百分比,很快就达到了 100%,但结果页面却花了很长时间。数据库(包含文件的元数据)未显示任何已上传的内容。
Django 逻辑应该没问题,因为开发机器(内置 Python 服务器)一切正常
我的配置:Django 1.8,Apache 2.4,Ubuntu14.04
这里是客作者。尝试将 passenger_log_level 设置为更高的值,这可能会让您深入了解发生这种情况的原因。
我不知道你用的是哪个Passenger版本,但是在版本5中,Passenger请求处理周期是这样的:
- Apache 收到请求。 headers 完成后,它将请求转发到 Passenger 服务器进程,同时将请求 body 流式传输到 Passenger 服务器进程。
- Passenger 服务器进程缓冲整个请求,包括 body。此缓冲发生在立即取消链接的临时文件中。
- 缓冲完成后,Passenger 服务器进程将请求(包括 body)转发给 Django 应用程序。然后乘客等待应用生成响应。
- Passenger 服务器进程将响应从 Django 应用流式传输到 Apache。这里没有阻塞缓冲。
- Apache 将 Passenger 服务器进程的响应流式传输到客户端。这里没有缓冲。
如果日志级别足够高,您可以看到每个步骤花费了多少时间,以便查明罪魁祸首。
请注意,请求处理周期在早期版本的 Passenger 中有所不同。我的建议仅适用于版本 5。
我有一个使用 Passenger 部署的 Django 应用程序(我没有选择 mod_wsgi 因为 mod_passenger 已经存在并且正在使用)。当我上传一个 MP3 文件 (900 kB) 时,Google Chrome 显示上传百分比,很快就达到了 100%,但结果页面却花了很长时间。数据库(包含文件的元数据)未显示任何已上传的内容。
Django 逻辑应该没问题,因为开发机器(内置 Python 服务器)一切正常
我的配置:Django 1.8,Apache 2.4,Ubuntu14.04
这里是客作者。尝试将 passenger_log_level 设置为更高的值,这可能会让您深入了解发生这种情况的原因。
我不知道你用的是哪个Passenger版本,但是在版本5中,Passenger请求处理周期是这样的:
- Apache 收到请求。 headers 完成后,它将请求转发到 Passenger 服务器进程,同时将请求 body 流式传输到 Passenger 服务器进程。
- Passenger 服务器进程缓冲整个请求,包括 body。此缓冲发生在立即取消链接的临时文件中。
- 缓冲完成后,Passenger 服务器进程将请求(包括 body)转发给 Django 应用程序。然后乘客等待应用生成响应。
- Passenger 服务器进程将响应从 Django 应用流式传输到 Apache。这里没有阻塞缓冲。
- Apache 将 Passenger 服务器进程的响应流式传输到客户端。这里没有缓冲。
如果日志级别足够高,您可以看到每个步骤花费了多少时间,以便查明罪魁祸首。
请注意,请求处理周期在早期版本的 Passenger 中有所不同。我的建议仅适用于版本 5。