我正在尝试开发一个能够让用户在服务器上运行C程序的Django
网络应用程序。我目前以下的步骤:使用Django进行远程代码执行的Web应用程序
- 代码用户类型和点击了“
Submit
”按钮 - 代码进入服务器;服务器把它放在一个临时文件
- 代码是用汇编了呼叫
subprocess.Popen()
- 输出(错误)返回到浏览器
这是一个简单的模型,做工精细。但是,我不知道这是否是“完美”的模式,我有一些担忧它的可扩展性(和安全性):
- 它会更好使用
threading
? - 使用
multiprocessing
会更好吗? - 我自己提出的相关问题中指出了叉炸弹问题here - 如何处理?
apache2.conf
中的以下设置是否能够处理这种情况?
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
说,当我考虑的情况下,5,15,50用户会尝试以并行方式运行他们的代码。此外,暂时假定不写入恶意代码。
刚才提到,mod_wsgi
和mpm-prefork
与Apache2正在使用。
感谢您的所有建议!
你在做什么,使用mod_wsgi和prefork MPM的嵌入模式是一个不好主意。去阅读http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html –