Plask app.run()만을 스탠드아론으로 사용하여 여러 클라이언트를 지원할 수 있습니까?
Flask를 Apache나 다른 웹 서버와 연결할 수 있습니다.하지만 저는 Flask를 여러 클라이언트에 동시에 서비스를 제공하는 독립 실행형 서버로 운영하려고 합니다.
이게 가능합니까?여러 스레드를 산란하여 관리해야 합니까?
flask.Flask.run
는 추가 키워드 인수를 받아들입니다(**options
전송처: 이 인수들 중2개는threaded
(부울) 및processes
(이 값을 1보다 큰 값으로 설정하면 werkzeug가 요구를 처리하는 여러 프로세스를 생성할 수 있습니다).
threaded
디폴트로 하다True
따라서 최신 버전의 Flask에서는 기본 개발 서버가 여러 클라이언트를 동시에 처리할 수 있습니다.이전 버전의 플라스크의 경우 명시적으로 합격할 수 있습니다.threaded=True
이 동작을 유효하게 합니다.
예를 들어 다음과 같이 할 수 있습니다.
if __name__ == '__main__':
app.run(threaded=True)
오래된 Flask 버전과 호환되는 방식으로 스레드를 사용하여 여러 클라이언트를 처리합니다.
if __name__ == '__main__':
app.run(threaded=False, processes=3)
Werkzeug에게 수신 요청을 처리하기 위한 세 가지 프로세스를 생성하도록 지시하거나
if __name__ == '__main__':
app.run()
Flask 1.0 이상을 사용할 것을 알고 있는 경우 스레드를 사용하여 여러 클라이언트를 처리합니다.
말하자면, Werkzeuk's는serving.run_simple
표준 라이브러리의 패키지를 래핑합니다.이 패키지에는 실제 가동 가능한 웹 서버가 아닌 WSGI의 참조 구현이 포함되어 있습니다.Plask를 실제 가동에서 사용하는 경우(동시 사용자가 10명 이하인 트래픽의 저부하 내부 어플리케이션이 아니라고 가정할 경우), 실제 웹 서버 뒤에 Flask를 설치해야 합니다(일부 권장 방법은 Flask 문서의 "Deployment Options" 섹션을 참조하십시오).
심플한 사용app.run()
from Flask는 한 번에 하나의 클라이언트만 처리할 수 있는 단일 스레드에 단일 동기 서버를 만듭니다.이러한 이유로 수요가 적은 제어 환경(개발, 디버깅)에서 사용하기 위한 것입니다.
Python GIL 때문에 스레드를 직접 만들고 관리하는 것 또한 그리 큰 성과를 거두지 못할 것입니다.
하지만 아직 좋은 선택지가 몇 가지세요.Gunicorn은 견고하고 사용하기 쉬운 WSGI 서버입니다.여러 워커를 생성할 수 있습니다(개별 프로세스이므로 GIL은 걱정하지 않습니다).또한 비동기 워커가 포함되어 있기 때문에 어플리케이션의 처리속도가 향상됩니다(특히 Flask를 사용하는 경우).
그럼에도 불구하고, 귀니콘조차 공개적으로 노출되어서는 안 될 것이다.프로덕션에서는 보다 견고한 HTTP 서버 뒤에 사용해야 합니다.nginx는 Gunicorn 및 Flask와 잘 어울리는 경향이 있습니다.
2020년부터의 힌트:
Flask 1.0부터는 기본적으로 여러 스레드(소스)를 사용할 수 있습니다. 아무것도 할 필요가 없습니다.다음으로 업그레이드만 하면 됩니다.
$ pip install -U flask
「 」를 사용하고 flask run
app.run()
「」 「」 「」 「」)을하여, 을 제어할 수 있습니다.--with-threads/--without-threads
$ flask run --with-threads
와 같다app.run(threaded=True)
언급URL : https://stackoverflow.com/questions/14814201/can-i-serve-multiple-clients-using-just-flask-app-run-as-standalone
'programing' 카테고리의 다른 글
프롬프트 없이 PECL 모듈 설치 (0) | 2022.09.12 |
---|---|
정렬된 구문 뒤에 있습니다(key=sortda: ...). (0) | 2022.09.12 |
.py 파일을 구문 분석하고 AST를 읽고 수정한 다음 수정된 소스 코드를 다시 씁니다. (0) | 2022.09.12 |
Vue에서 null 속성을 읽는 동안 워처에 대한 콜백 오류가 발생했습니다. (0) | 2022.09.12 |
데이터베이스를 Amazon RDS MySQL 인스턴스에서 로컬 인스턴스로 내보내는 방법 (0) | 2022.09.12 |