Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Django的Web应用程序,用于远程代码执行_Django_Apache_Mod Wsgi - Fatal编程技术网

带有Django的Web应用程序,用于远程代码执行

带有Django的Web应用程序,用于远程代码执行,django,apache,mod-wsgi,Django,Apache,Mod Wsgi,我正在尝试用Django开发一个web应用程序,它可以让用户在服务器上运行C程序。我目前正在执行的步骤如下: 用户键入代码并单击“Submit”按钮 代码进入服务器;服务器将其放入一个临时文件中 代码是通过调用subprocess.Popen() 输出(错误)返回到浏览器 这是一个简单的模型,运行良好。但是,我不确定这是否是一个“完美”的模型,我对它的可伸缩性(和安全性)有些担心: 使用线程会更好吗 使用多处理会更好吗 叉子炸弹问题是在我提出的一个相关问题中指出的——如何处理?apache2

我正在尝试用
Django
开发一个web应用程序,它可以让用户在服务器上运行C程序。我目前正在执行的步骤如下:

  • 用户键入代码并单击“
    Submit
    ”按钮
  • 代码进入服务器;服务器将其放入一个临时文件中
  • 代码是通过调用subprocess.Popen()
  • 输出(错误)返回到浏览器
这是一个简单的模型,运行良好。但是,我不确定这是否是一个“完美”的模型,我对它的可伸缩性(和安全性)有些担心:

  • 使用
    线程
    会更好吗
  • 使用
    多处理
    会更好吗
  • 叉子炸弹问题是在我提出的一个相关问题中指出的——如何处理?
    apache2.conf
    中的以下设置是否能够处理此类情况
  • 我正在考虑这样的情况,比如说,5、15、50个用户会尝试并行运行他们的代码。此外,目前我假设不会编写恶意代码

    需要指出的是,
    mod_wsgi
    mpm prefork
    正在使用Apache2

    谢谢你的建议

    也许这个项目会对你有所帮助

    芹菜是一种基于分布式消息传递的异步任务队列/作业队列。它专注于实时操作,但也支持调度


    执行单元称为任务,使用多处理、Eventlet或gevent在单个或多个工作服务器上并发执行。任务可以异步执行(在后台)或同步执行(等待准备就绪)。

    不管您在做什么,使用mod_wsgi和prefork MPM的嵌入式模式都是一个坏主意。去看看谢谢,我用的是
    芹菜
    。但是,不确定与性能相关的事情。
    
        # 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