플라스크는 동시 요청을 어떻게 처리합니까? [복제]
Nov 18 2020
내 플라스크 앱은 다음을 수행합니다. 사용자가 파일을 업로드-파일이 처리됨-> 플라스크가 파일을 반환합니다.
두 명의 사용자가 동시에 웹 사이트에 액세스하여 동일한 작업을 수행하면 어떻게되는지 궁금했습니다.
나는 앱에서 동시 요청을 수행하기 위해 ray 와 함께 셀레늄 서버 를 사용 했습니다.
짧은 형식의 코드
ray.init()
@ray.remote
def parallel_1():
driver = webdriver.Remote(
command_executor="http://localhost:4444/wd/hub",
desired_capabilities={
"browserName": "chrome",
})
# do task
ret_id1 = parallel_1.remote()
ret_id2 = parallel_1.remote()
ret1, ret2 = ray.get([ret_id1, ret_id2])
플라스크 뷰 기능은 단순한 평면이며 스레드 또는 세션이 없습니다. 내가 인식하지 못하는 후드 아래에서 뭔가가 진행되고 있습니까? 또는 플라스크는 동시 요청을 어떻게 처리합니까?
답변
3 Thomas Nov 18 2020 at 17:33
플라스크는 그렇지 않습니다. 병렬 요청 처리는 처리를 위해 요청을 Flask로 보내는 기본 WSGI 웹 서버의 작업입니다.
Flask.run()기본적으로 스레드 로 실행하여 호출되는 Flask의 기본 제공 개발 서버
프로덕션에서는 WSGI 컨테이너 또는 기타 배포 옵션 중 하나를 사용하고 거기에서 병렬 처리를 제어합니다. 예를 들어 Gunicorn 에는 작업자 프로세스 수 를 제어하고 이러한 작업자가 작동하는 방식 (프로세스, 스레드 또는 Tornado 이벤트 머신 등)을 제어하는 -w명령 줄 인수 가 -k있습니다.