2011-09-01 8 views
2

사용자가 서버에서 C 프로그램을 실행할 수있게 해주는 Django으로 웹 응용 프로그램을 개발하려고합니다. 코드에서원격 코드 실행 용 Django가 설치된 웹 응용 프로그램

  • 사용자 유형과
  • 코드 서버로가는 'Submit'버튼을 클릭; 나는 현재 다음하고있어 단계는 서버는
  • 코드 subprocess.Popen()
  • 출력 (오류)에 대한 호출을 사용하여 컴파일 다시 브라우저

이 간단한 모델에 반환되고, 잘 작동 임시 파일에 넣습니다. 그러나, 나는 이것이 "완벽한"모델입니다 있는지 확실하지 않습니다, 그리고 확장 성 (보안)의에 대해 좀 우려했습니다 :

  1. threading를 사용하는 것이 더 있을까?
  2. multiprocessing을 사용하는 것이 더 좋습니까?
  3. 포크 폭탄 문제는 자신이 제기 한 관련 질문에서 지적되었습니다 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 명의 사용자가 동시에 자신의 코드를 실행하려고합니다. 또한 당분간 악성 코드가 작성되지 않는다고 가정하고 있습니다.

Apache2를 사용하는 mod_wsgimpm-prefork이 사용되고 있습니다.

의견을 보내 주셔서 감사합니다.

+0

mod_wsgi의 임베디드 모드를 사용하고 MPM을 프리 프레킹하는 것은 좋지 않은 아이디어입니다. http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html을 읽어보십시오. –

답변

2

Celery 프로젝트가 도움이 될 수 있습니다.

셀리는 분산 메시지 전달을 기반으로하는 비동기 작업 대기열/작업 대기열입니다. 실시간 운영에 초점을 맞추지 만 스케줄링도 지원합니다.

작업이라고하는 실행 단위는 다중 처리, Eventlet 또는 gevent를 사용하여 하나 이상의 작업자 서버에서 동시에 실행됩니다. 작업은 비동기 적으로 (백그라운드에서) 또는 동 기적으로 (준비 될 때까지 대기) 실행할 수 있습니다.

+0

감사합니다. 저는 셀러리를 사용하고 있습니다. 그러나 성능 관련 문제에 대해서는 확실하지 않습니다. – Barun

관련 문제