[python] Tornado 프로젝트의 효율적인 디렉토리 구조
Tornado는 Python으로 작성된 비동기 웹 프레임워크로써, 웹 애플리케이션을 개발할 때 많이 사용됩니다. 이 글에서는 Tornado 프로젝트를 구성할 때 효율적인 디렉토리 구조를 소개하고자 합니다. 적절한 디렉토리 구조를 사용하면 코드의 유지 보수성과 가독성을 향상시킬 수 있습니다.
1. 기본 구조
일반적으로 Tornado 프로젝트의 기본 구조는 다음과 같습니다:
myproject/
├─ main.py
├─ handlers/
│ ├─ __init__.py
│ ├─ handler1.py
│ ├─ handler2.py
│ └─ ...
├─ templates/
│ ├─ base.html
│ ├─ page1.html
│ ├─ page2.html
│ └─ ...
└─ static/
├─ css/
│ ├─ style1.css
│ ├─ style2.css
│ └─ ...
├─ js/
│ ├─ script1.js
│ ├─ script2.js
│ └─ ...
└─ img/
├─ image1.png
├─ image2.png
└─ ...
main.py
: Tornado 애플리케이션의 진입점이 되는 파일입니다.handlers/
: 모든 request 핸들러 클래스를 포함하는 디렉토리입니다. 각 핸들러는 별도의 파일로 구성됩니다.templates/
: HTML 템플릿 파일들을 포함하는 디렉토리입니다.base.html
처럼 공통으로 사용되는 템플릿 파일을 포함할 수 있습니다.static/
: CSS, JavaScript, 이미지 등 정적 파일들을 포함하는 디렉토리입니다. 각각의 하위 디렉토리에 파일들을 구분하여 저장할 수 있습니다.
이 구조는 간단하면서도 Tornado 애플리케이션을 구성하기에 충분합니다. 하지만 프로젝트의 규모가 커지고 복잡해질수록 더 세분화된 디렉토리 구조가 필요할 수 있습니다.
2. 패키지 기반의 구조
더 복잡한 Tornado 프로젝트의 경우, 패키지 기반의 구조를 사용할 수 있습니다. 이 구조는 큰 규모의 애플리케이션을 개발하거나 여러 개의 서브 프로젝트를 포함하는 경우 유용합니다.
myproject/
├─ main.py
├─ handlers/
│ ├─ __init__.py
│ ├─ handler1.py
│ ├─ handler2.py
│ └─ ...
├─ templates/
│ ├─ base.html
│ ├─ page1.html
│ ├─ page2.html
│ └─ ...
└─ mysubpackage/
├─ __init__.py
├─ subhandler1.py
├─ subhandler2.py
└─ ...
- 패키지 기반의 구조에서는
handlers/
디렉토리 외에도mysubpackage/
라는 패키지를 추가로 포함하였습니다. mysubpackage/
패키지에는subhandler1.py
,subhandler2.py
와 같은 서브 핸들러 파일들이 포함됩니다.main.py
에서는handlers
외에도mysubpackage
를 import하여 사용할 수 있습니다.
이렇게 패키지 기반의 구조를 사용하면 기능을 더 세분화하고, 관련된 모듈들을 논리적으로 그룹화할 수 있습니다.
3. 결론
Tornado 프로젝트를 구성할 때 효율적인 디렉토리 구조를 선택하는 것은 중요합니다. 적절한 구조를 사용하면 코드 관리를 용이하게 할 수 있으며, 유지 보수 및 확장성도 향상시킬 수 있습니다. 기본 구조에서 시작하여 프로젝트의 규모와 요구 사항에 맞게 구조를 조정하고 확장해 나갈 수 있습니다.
참고 문서: