developer tip

Flask와 번들로 제공되는 서버는 프로덕션에서 사용하기에 안전한가요?

copycodes 2020. 12. 12. 11:28
반응형

Flask와 번들로 제공되는 서버는 프로덕션에서 사용하기에 안전한가요?


Flask와 번들로 제공되는 서버는 프로덕션 환경에서 배포하기에 안전한가요? 그렇지 않은 경우 프로덕션에서 Flask를 배포하려면 무엇을 사용해야합니까?


아니 . 번들 서버는 개발 서버입니다. 프로덕션 환경을 염두에두고 설계되지 않았습니다.

  • 기본적으로 한 번에 둘 이상의 요청을 처리하지 않습니다.
  • 디버그 모드를 켜놓고 오류가 발생하면 서버에서 임의의 코드를 실행할 수있는 셸이 열립니다 (생각 os.system('rm -rf /')).
  • 개발 서버가 제대로 확장되지 않습니다.

Flask는 Werkzeug의 개발 서버를 사용하며 문서에는 동일한 내용이 나와 있습니다.

개발 서버는 프로덕션 시스템에서 사용하기위한 것이 아닙니다. 특히 개발 목적으로 설계되었으며 높은 부하에서 제대로 작동하지 않습니다. 배포 설정의 경우 응용 프로그램 배포 페이지를 참조하십시오.

권장되는 접근 방식은 프로덕션 WSGI 서버사용 하여 Flask 애플리케이션을 실행하는 것입니다. 문서에는 배포 전용 섹션 인 배포 옵션이 있습니다.

애플리케이션 배포는 uWSGI 또는 gunicorn과 같은 WSGI 서버를 설치하고 Flask의 개발 서버 대신 실행하는 것처럼 간단합니다.

gunicorn -w 4 -b 127.0.0.1:4000 myproject:app

이미지 또는 비디오와 같은 정적 자산을 제공하거나 낮은 수준의 캐싱이 필요하거나 더 높은 동시성 요구 가있는 경우 nginx같은 웹 서버를 사용하고 모든 요청을 처리 하도록하는 것이 좋습니다 .

엉뚱한 ASCII 형식 :

                +----------+
                | Client 2 |
                +----------+
                      |
                      V 
+----------+      +-------+      +----------+
| Client 1 |----->| nginx |<-----| Client 3 |
+----------+      +-------+      +----------+
                      ^
                      |
                      V
           /--------------------\
           | useful nginx stuff |
           | like asset serving |
           | and rate limiting  |
           \--------------------/
                      |
                      V
               +-------------+
               | WSGI server |
               +-------------+

실제로 WSGI 서버 프로세스를 실행 하려면 Supervisor 를 사용할 수 있습니다 . 어떤 이유로 인해 실패하면 자동으로 서버를 다시 시작하고 로그를 보관하며 데몬으로 실행되므로 서버가 부팅 될 때 서비스가 시작됩니다.


기본적으로 아닙니다. 기본 제공 개발 서버는 프로덕션 환경에 배포하기에 안전하지 않습니다.

내장 된 개발 서버가 바로 그것입니다. 프로덕션에 사용하려면 여기에 설명 된 단계 중 하나를 따라야 합니다 .

여기에는 Apache / mod_wsgi 또는 이러한 독립형 wsgi 서버 http://flask.pocoo.org/docs/deploying/wsgi-standalone/ 중 하나 와 같이 WSGI 사양을 구현하는 여러 서버가 포함됩니다.

도 있습니다 uWSGIFastCGI를 옵션을 사용할 수 있습니다


가볍고 사용하기 쉽지만 Flask의 내장 서버는 확장 성이 좋지 않고 기본적으로 한 번에 하나의 요청 만 처리하므로 프로덕션에 적합하지 않습니다. http://flask.pocoo.org/docs/0.12/deploying/

참고 URL : https://stackoverflow.com/questions/12269537/is-the-server-bundled-with-flask-safe-to-use-in-production

반응형