저는 오늘 파이썬 웹 프레임 워크와 그에 대한 인상에 대해 제 동료에게 이야기하고있었습니다. 전 세계 요청을받은 Flask가 악취가 나고 반 패턴이라고 생각합니다.
문서는 요청 컨텍스트에 대해 말 :
반대로 요청을 처리하는 동안 몇 가지 다른 규칙이 있습니다.
- 요청이 활성화되어있는 동안 컨텍스트 로컬 객체 (flask.request 및 기타)는 현재 요청을 가리 킵니다.
- 모든 코드는 언제든지 이러한 객체를 보유 할 수 있습니다.
이 디자인 결정의 기본 개념을 이해하고 응용 프로그램을 더 단순하게 만드는 것 같습니다. Thread Locals 의 경우와 마찬가지로 타협입니다 .
일반적으로 스레드 로컬을 사용하는 것은 그리 좋은 생각이 아닙니다. 스레드 개념을 기반으로하지 않는 서버에서는 문제가 발생하여 큰 응용 프로그램을 유지 관리하기가 어렵습니다. 그러나 Flask는 대규모 응용 프로그램이나 비동기 서버용으로 설계된 것이 아닙니다. 플라스크는 전통적인 웹 애플리케이션을 빠르고 쉽게 작성할 수 있기를 원합니다.
현재 요청 정보로 글로벌 오브젝트를 패치하는 것이 안티 패턴입니까?
정적 코드 분석기의 관점에서 볼 때 전역 상태이기 때문에 그렇지 않다고 생각합니다. 그리고 프로그래머로서 나는 문서를 주의 깊게 읽지 않으면 어떻게 작동하는지 이해할 수 없습니다 . 그리고 이것은 테스트에 영향을 미칩니다 .
요청을 뷰에 대한 인수로 전달하는 것이 좋지 않습니까? 더 읽기 쉽고 명확하며 디버깅하기 쉽다고 생각합니다. 그리고 글로벌 상태를 피하십시오.