체리파이(CherryPy)는 파이썬 프로그래밍 언어를 사용하는 객체 지향 웹 애플리케이션 프레임워크이다. HTTP 프로토콜을 래핑하여 웹 애플리케이션의 신속한 개발을 위해 설계되었지만, 낮은 수준으로 유지되며 RFC 7231에 정의된 것 이상의 기능은 제공하지 않는다.
개요
체리파이는 자체적으로 웹 서버로 동작할 수 있으며, WSGI 호환 환경을 통해 실행할 수도 있다. 출력 렌더링을 위한 템플릿 작성이나 백엔드 액세스와 같은 작업은 프레임워크의 범위에 포함되지 않으며, 이러한 부분은 개발자가 선택한 외부 라이브러리로 처리한다. 프레임워크는 요청/응답 처리의 정의된 지점에서 호출되는 필터(도구)를 통해 확장 가능하다.
역사
- 개발자: CherryPy 팀
- 최초 발표: 2002년 6월 (약 24년 전)
- 최신 안정 버전: 18.10.0 (2024년 6월 15일)
- 프로젝트 창시자: Remi Delon
주요 특징
- 파이썬다운 인터페이스(Pythonic Interface): 일반 파이썬 모듈처럼 사용할 수 있도록 설계되어, 개발자가 웹 애플리케이션임을 의식하지 않고 개발할 수 있다.
- HTTP/1.1 및 WSGI 호환: 자체 스레드 풀 기반 웹 서버를 내장하며, Apache, IIS, lighttpd, FastCGI, SCGI, mod_wsgi 등 다른 WSGI 지원 서버와도 연동 가능하다.
- 멀티 HTTP 서버: 여러 포트에서 동시에 수신 대기할 수 있다.
- 플러그인 시스템: 서버 시작, 종료 등의 이벤트에 연결되어 실행되는 코드를 작성할 수 있다.
- 내장 도구: 캐싱, 인코딩, 세션, 인증, 정적 콘텐츠 제공 등을 위한 도구를 기본 제공한다.
- 설정 시스템: 사이트, 애플리케이션, 컨트롤러 수준에서 파이썬 딕셔너리, 설정 파일 등을 통해 설정을 구성할 수 있다.
- ORM, 템플릿 언어, JS 라이브러리 강제하지 않음: SQLAlchemy, SQLObject, Jinja, Mako 등 다양한 라이브러리와 자유롭게 조합하여 사용할 수 있다.
사용 예시
import cherrypy
class HelloWorld:
@cherrypy.expose
def index(self):
return "Hello World!"
cherrypy.quickstart(HelloWorld())
라이선스
BSD 라이선스로 배포된다.
활용 사례
- TurboGears: TurboGears 1.x 및 2.x의 핵심 구성 요소로 사용되었다.
- Netflix: 고성능 RESTful API 및 웹 인터페이스 구축에 체리파이를 사용한다.
- Splunk Enterprise: CherryPy 3.1.2를 사용한다.
공식 웹사이트
- cherrypy.dev
- GitHub 저장소: github.com/cherrypy/cherrypy