2016-08-28 2 views
1

django 프레임 워크를 사용하고 있습니다. 파이썬과 장고를 사용하여 하나의 웹 애플리케이션을 만들었습니다. 내 응용 프로그램에서 클래스 또는 oops 개념을 사용하지 않습니다. 파이썬의 함수를 사용하고 있습니다. 예 : 여러 사용자가 동시에 호출 할 경우 python 함수가 작동합니까?

def addnum(request): 
    a=request.GET.get('a') 
    b=request.GET.get('b') 
    res=a+b 
    return HttpResponse(json.dumps(res), content_type="application/json") 

지금은 Ajax를 사용하여 내 결과를 다시 가져 오는 클라이언트 측에서 전화하고 기능이 종류의

여러 사용자가 같은 순간에 응용 프로그램 .. 지금이 'ADDNUM를 액세스하는 경우 내 질문 ..입니다 '함수는 같은 순간에 전화를받을 것입니다 ... 그러면 어떻게 작동할까요? 일부 사용자 및 잘못된 출력이 중단 되나요? 성능이 저하되고 응답 시간이 증가합니까? 병렬로 작동하고 모든 것이 잘 작동합니까?

이 문제/혼란에서 빠져 나오게 도와주세요!

+0

어머, 한 줄로 대답하길 희망하지만 나는 할 수 없습니다. 나는 너와 좋은 긴 대답을 기다릴 것이다. – turkus

+0

이것은 완전히 장고 사이트를 운영하는 서버에 달려 있습니다. –

답변

0

"동시에"여러 사용자가 액세스하는 경우 실제로는 동시에 발생하지 않습니다. uWSGI를 사용하여 webapp를 제공한다고 가정 해 봅시다. 즉, webapp에는 요청을 처리하는 많은 수의 근로자가 있습니다.

한 명의 작업자가있는 가장 단순한 경우를 생각해 봅시다. 이 경우 모든 것이 순차적입니다. uWSGI는 들어오는 순서대로 모든 요청을 자동으로 대기열에 올려 놓고 웹 응용 프로그램에 하나씩 전달합니다. 잘 못된 결과에 대해 경쟁 조건을 일으키지 않았 으면 좋겠다.

그러나 10 초 요청을받는다면 이는 한 명의 작업자가 각 요청을 < 10ms에 처리해야 함을 의미합니다. 할 수 없다면 요청이 쌓이기 시작할 것입니다.

또한 "즉시"10 개의 요청을받는다고 가정 해 봅시다. 그런 다음 하나의 요청은 10ms에 반환 될 수 있고 두 번째 요청은 20ms에 반환 될 수 있으며 세 번째 요청은 30ms 내에 반환 될 수 있습니다 (네트워크 왕복 시간이 있기 때문에 실제로는 정확하지 않습니다. 그러나 지금은 무시하십시오)

여러 명의 작업자 (별도의 프로세스)를 설정하여 이러한 요청을보다 신속하게 처리 할 수 ​​있습니다. 그러나 이들은 분리 된 프로세스이기 때문에 메모리를 공유하지 않습니다. 이 경우 실제로 경쟁 조건이 없습니다. (파일에 쓰기/읽기와 같은 작업을하는 경우이 변경 사항이 적용됩니다)

여기서는 여러 작업자가 동시에 요청을 처리하도록 할 수 있습니다. 하지만 여전히 요청 처리 대기를 유지하고 요청을 처리 할 때마다 요청을 대기열에 보관합니다.

관련 문제