我正在尝试使用Django
开发一个允许用户在服务器上运行C程序的Web应用程序。我目前正在遵循的步骤是:
Submit
”按钮subprocess.Popen()
这是一个简单的模型,并且工作正常。但是,我不确定这是否是“完美”模型,我对它的可扩展性(和安全性)有一些担忧:
threading
会更好吗? multiprocessing
会更好吗? 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个用户会尝试并行运行他们的代码。此外,暂时假设不会写入恶意代码。
简而言之,正在使用Apache mod_wsgi
和mpm-prefork
。
感谢你的所有建议!
答案 0 :(得分:3)
也许Celery项目会帮助你。
Celery是基于分布式消息传递的异步任务队列/作业队列。它专注于实时操作,但也支持调度。
执行单元(称为任务)使用多处理,Eventlet或gevent在一个或多个工作服务器上并发执行。任务可以异步(在后台)或同步执行(等到准备好)。