限制django / apache的最大并发请求数

时间:2010-04-27 07:28:54

标签: django concurrency httprequest rate-limiting

我有一个django网站,演示了工具的用法。我的一个视图将文件作为输入,并通过外部python脚本运行一些相当繁重的计算,并将一些输出返回给用户。该工具运行速度足以在同一请求中返回输出。但是,我想限制对此URL /视图的并发请求数以防止服务器拥塞。

关于我如何做到这一点的任何提示?页面本身非常简单,使用率也很低。

2 个答案:

答案 0 :(得分:4)

假设您正在使用mod_wsgi,您可以将WSGI应用程序分段到多个mod_wsgi守护程序进程组,并将要限制的特定URL限制为使用较少数量的进程/线程委托给自己的mod_wsgi守护进程组。

WSGIDaemonProcess myapp processes=2 threads=10
WSGIDaemonProcess myapp-restricted threads=2

WSGIScriptAlias / /some/path/app.wsgi

WSGIProcessGroup myapp

<Location /some/specific/url>
WSGIProcessGroup myapp-restricted
</Location>

请注意,排队等待访问受限进程中这2个线程的请求仍将占用主Apache服务器子进程中的工作线程。因此,您希望确保使用worker MPM(因此没有mod_php)并使用足够的备用线程配置MPM来处理这些备份请求以及正常流量。

答案 1 :(得分:1)

这是一个关于mod_wsgi的问题,假设您使用它来为Apache提供应用程序(如果不是,那么你真的应该这样)。

mod_wsgi的创建者,Graham Dumpleton,有时会挂在这些部分周围,但在等待他出现时,你可能会看superb documentation。看起来像WSGIDaemonProcess指令的一个或另一个参数可能就是你要找的东西。