我有一个django网站,演示了工具的用法。我的一个视图将文件作为输入,并通过外部python脚本运行一些相当繁重的计算,并将一些输出返回给用户。该工具运行速度足以在同一请求中返回输出。但是,我想限制对此URL /视图的并发请求数以防止服务器拥塞。
关于我如何做到这一点的任何提示?页面本身非常简单,使用率也很低。
答案 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指令的一个或另一个参数可能就是你要找的东西。