让apache读取所有发布的数据,然后再将其传递给Django

时间:2013-08-11 14:55:49

标签: django apache http post mod-wsgi

我已经使用Apache和mod_wsgi设置了Linux服务器。从我的Apache配置:

WSGIDaemonProcess myapp processes=1 threads=10

这里myapp是一个Django webapp。当myapp在Django HttpRequest对象中收到来自Apache的大型http POST请求时,第一次访问发布的数据需要几秒钟的挂钟时间。我假设这是因为在从网络读取POST的完整主体并且访问HttpRequest对象中的发布数据之前调用myapp,直到读取发布的数据为止。

在Apache读取所有发布的数据之前,有没有办法不调用myapp?

我问,因为我想将线程数(在本例中为10)调整为myapp中并发处理的最佳选择。因此,我不想花时间等待从网络接收发布的数据。

我知道我可能会将线程数增加到10以上并实现另一种机制来确保最多10个线程同时处理。

1 个答案:

答案 0 :(得分:0)

有多大?

如果它非常大,那么如果要将内容全部预先读入内存,然后将其移交给Web应用程序,则可能会耗尽内存使用量。无论如何,Apache / mod_wsgi中没有办法进行这样的预读。

在Apache / mod_wsgi之前使用nginx作为代理可以帮助将Apache与慢速HTTP客户端隔离开来,但是nginx只会在代理请求内容大小高达1MB之前进行预读取。允许对大型请求内容大小进行预读和缓冲,然后您必须担心所提到的内存使用情况。

您应该做的是将这些特定的URL卸载到nginx以处理上传管理器。例如: