[파이썬] Tornado의 Application 객체

Tornado는 Python으로 작성된 웹 애플리케이션 프레임워크로, 비동기 네트워크 라이브러리로 구성되어 있습니다. Tornado의 핵심 기능 중 하나는 Application 객체입니다.

Application 객체는 Tornado 애플리케이션의 핵심 컨테이너입니다. 이 객체를 사용하여 웹 애플리케이션의 설정, 핸들러, URL 매핑 등을 관리할 수 있습니다.

기본 사용법

아래는 Tornado Application 객체의 기본 사용법입니다.

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, Tornado!")

def make_app():
    handlers = [
        (r"/", MainHandler),
    ]
    return tornado.web.Application(handlers)

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

위의 예제에서는 Application 객체를 생성하기 위해 tornado.web.Application 클래스를 사용하였습니다. Application 객체의 생성자에는 handlers라는 인자를 전달해야 합니다. 이 인자는 요청을 처리할 핸들러들의 리스트입니다.

위의 예제에서는 “/” URL에 대한 요청을 MainHandler 클래스가 처리하도록 설정하였습니다. MainHandler 클래스는 tornado.web.RequestHandler 클래스를 상속받아 구현되었으며, 요청을 처리하기 위해 get 메소드를 정의하였습니다.

애플리케이션은 tornado.ioloop.IOLoop 객체를 사용하여 시작됩니다. listen 메소드를 호출하여 포트 8888에서 서버를 실행합니다. 그리고 IOLoop.current().start() 메소드를 사용하여 애플리케이션을 실행합니다.

설정 설정

Application 객체는 애플리케이션의 전반적인 설정을 관리하는 데에 사용됩니다. 설정을 Application 객체의 생성자에서 설정할 수 있습니다.

settings = {
    "debug": True,
    "template_path": "templates",
}
app = tornado.web.Application(handlers, **settings)

위의 예제에서는 settings라는 딕셔너리를 생성하여 디버그 모드를 설정하고, 템플릿 경로를 설정하였습니다. 이렇게 설정된 옵션은 애플리케이션에서 참조될 수 있습니다.

URL 매핑

Application 객체는 URL 매핑을 통해 요청을 처리할 핸들러를 연결합니다. 이를 위해 handlers 인자에 리스트를 전달하고, 각 핸들러와 URL 패턴을 지정합니다.

class AboutHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("This is the about page")

handlers = [
    (r"/", MainHandler),
    (r"/about", AboutHandler),
]

위의 예제에서는 루트 URL(“/”)에 대한 요청을 MainHandler 클래스가 처리하고, “/about” URL에 대한 요청을 AboutHandler 클래스가 처리하도록 설정하였습니다.

handlers 리스트에서 URL 패턴은 정규식을 사용하여 지정할 수 있습니다. 이를 통해 동적인 URL을 처리하는 데에 유용하게 사용할 수 있습니다.

정리

Tornado의 Application 객체는 웹 애플리케이션을 구성하는 핵심 컨테이너입니다. 이 객체를 사용하여 설정, URL 매핑, 핸들러 등을 관리하고 구성할 수 있습니다. Application 객체를 잘 활용하여 효과적인 Tornado 웹 애플리케이션을 개발해보세요.