[파이썬] Tornado에서의 정적 파일 서비스

Tornado는 파이썬으로 작성된 웹 프레임워크로, 비동기 웹 서버를 구축하는 데 사용됩니다. Tornado는 주로 동적 콘텐츠 생성에 사용되지만, 정적 파일을 서비스하는 기능도 제공합니다. 이 기능은 웹 애플리케이션에서 정적 리소스(이미지, CSS 파일, JavaScript 파일 등)를 효율적으로 제공할 수 있는 방법을 제공합니다.

정적 파일 서비스 설정하기

Tornado에서 정적 파일 서비스를 사용하려면, tornado.web.StaticFileHandler 클래스를 사용하여 요청된 파일을 찾고 전송하는 핸들러를 등록해야 합니다. 다음은 Tornado 애플리케이션에서 정적 파일 서비스를 설정하는 예제 코드입니다.

import tornado.web
import tornado.ioloop

class StaticFileHandler(tornado.web.StaticFileHandler):
    def write_error(self, status_code, **kwargs):
        if status_code == 404:
            # 파일을 찾을 수 없는 경우 404 에러 페이지를 반환하도록 설정
            self.render("404.html")

def make_app():
    return tornado.web.Application([
        (r"/static/(.*)", StaticFileHandler, {"path": "./static"}),
    ])

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

위의 예제에서 StaticFileHandler 클래스는 tornado.web.StaticFileHandler를 상속하고, write_error 메서드를 오버라이딩하여 404 에러 페이지를 반환하도록 설정합니다.

make_app 함수에서는 StaticFileHandler/static/(.*) URL 패턴에 등록하고, path 인자를 통해 정적 파일이 위치한 디렉토리 경로를 설정합니다. 위의 예제에서는 현재 디렉토리의 ./static 경로에 정적 파일이 저장되어 있다고 가정합니다.

마지막으로, app.listen(8888)을 통해 Tornado 애플리케이션이 8888 포트에서 실행되도록 설정합니다.

정적 파일 서비스 사용하기

Tornado에서 정적 파일 서비스를 사용하려면, 웹 페이지에서 요청할 파일의 URL을 설정하면 됩니다. 위의 예제에서는 /static/ URL 패턴으로 정적 파일을 요청할 수 있습니다. 예를 들어, 웹 페이지에서 <img src="/static/image.png">와 같이 이미지 파일을 요청할 수 있습니다. Tornado는 요청된 파일을 찾고 해당 파일을 응답으로 전송합니다.

결론

Tornado에서의 정적 파일 서비스는 간단한 설정과 몇 줄의 코드로 쉽게 구현할 수 있습니다. 이를 통해 웹 애플리케이션의 성능을 향상시키고, 정적 리소스를 효율적으로 제공할 수 있습니다. Tornado의 정적 파일 서비스 기능을 활용하여 웹 애플리케이션을 더욱 강력하고 효율적으로 개발할 수 있습니다.