2013-02-03 3 views
23

내 Flask 응용 프로그램은 특정 페이지를 가져 오기 위해 꽤 큰 계산을 수행해야합니다. Flask가 그 기능을 수행하는 동안, Flask는 큰 계산량으로 인해 다른 사용자가 웹 사이트에 액세스 할 수 없습니다.Flask에서 여러 요청 처리

플라스크 애플리케이션이 여러 사용자의 요청을 수락 할 수있는 방법이 있습니까?

+1

[celery] (http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html)를 사용할 수있는 큰 계산을 생략 할 수 있습니다. 여러 프로세스, 스레드, 마이크로 스레드를 사용하여 작업을 실행할 수 있습니다. – jfs

답변

38

예, 다른 WSGI 서버에 응용 프로그램을 배포하십시오 (Flask deployment options documentation 참조).

Flask와 함께 제공되는 서버 구성 요소는 실제로 응용 프로그램을 개발할 때만 의미가 있습니다. 동시 요청 (app.run(threaded=True))을 처리하도록 구성 할 수 있습니다. 위의 문서에는 동시 요청을 처리 할 수있는 서버에 대한 몇 가지 옵션이 나열되어 있습니다. 은 훨씬 강력하고 조정 가능합니다.

+0

은 내 의견을 여기에서 물어볼 것입니다. 문서에 나와있는 5 가지 방법 중 어느 것을 제안 하시겠습니까? –

+1

@IgnasB .: 죄송합니다. 사용 사례, 경험 및 배포 시나리오에 크게 의존합니다. 나는 5 가지를 모두 사용했다고 말할 수 없으므로 나는 추천하지 않을 것입니다. –

+0

감사합니다. 작동합니다! 나는 하나의 (매우 중요한) 문제 만 남았습니다. 사용자가 페이지에 액세스했지만 계산이 끝나기 전에 떠나는 경우 계산이 완료 될 때까지 계산이 계속 실행됩니다. 사용자가 퇴장하면 계산을 중지 할 수 있습니까? –

1

오랜 시간이 소요되는 요청의 경우 백그라운드 작업을 시작하는 것이 좋습니다.

+0

오랜 시간이 무엇입니까? 10 초가 오래 걸릴까요? 아니면 오랜 시간이 지난 것일까 요? 이 응용 프로그램에 종속 된 것 같아요, 엄지 손가락 규칙이 있습니까? – Arturo

+0

당신은 당신의 요청이 타임 아웃되는 것을 원하지 않거나 사용자가 방금 차단되었다고 생각하지 않기를 원합니다. 나는 10 초가 이미 위험하다고 생각하고 그 이상은 너무 길다. – LtWorf