2016-11-01 2 views
4

장고은 프로세스 또는 스레드를 사용하여 사용자 요청을 처리합니다.Django는 사용자 요청을 처리하기 위해 프로세스 또는 스레드를 사용합니까?

Django가 스레드를 사용하는 경우 모든 CPU 코어 (파이썬 전역 인터프리터 잠금)를 사용할 수 없으며 장고가 프로세스를 사용할 경우 걱정할 공유 메모리가 없습니다.

Google에서 정보를 찾으려고 시도했지만 찾을 수있는 최대 값은 Did django use thread to handle requests?입니다. 이것은 대답이 아닌 것 같습니다.

답변

3

Django는 WSGI 응용 프로그램으로 실행됩니다. 이러한 상황은 WSGI 서버 (예 : uWSGI, Gunicorn, mod_wsgi)에 의해 결정됩니다.

Django의 요청 처리기는 스레드로부터 안전합니다. WSGI 서버가 프로세스 당 여러 프로세스 (작업자라고도 함) 및 스레드를 사용하도록 구성 할 수 있습니다.

앞서 언급 한 것처럼 프로세스는 더 많은 메모리를 사용하지만 스레드는 GIL의 영향을받습니다. 좋은 구성은 프로세스 수와 프로세스 당 스레드 수 간의 균형을 찾아야합니다.

+0

안전한 동시 프로세스 풀을 만들고 해당 풀에보기를 요청할 수 있습니까? (나는 내 ​​컴퓨팅을 배포 할 필요가있다.) 어떤 방법이 있나? Python multiprocessing.pool (문서로 작성된 방법)은 한 프로세스에서만 액세스 할 수 있습니다. –

+2

@SeregaLuchko 아마도 [Celery] (http://www.celeryproject.org/)와 같은 작업 큐를 찾고 있습니까? – knbk

+0

고마워요!)) –

관련 문제