0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

How to use Tornado as python web framework

Posted at

Overview

 以前はDjangoでWebApplicationを作っていたが、もっと軽量で非同期のWebApplicationが必要。
という事で、tornadoを使ってみることにした。

 tornadoはdjangoに比べて圧倒的に簡素にできていてインストールもファイルの構造もとてもシンプル。
というか、ファイルの構造が自由すぎて、何をどう配置するのが美しいのかよくわからない。
そんな事もあって、備忘録がてら利用記録を書くことにする

実行環境

  • CentOS7 (on VMware ESXi)
  • Docker CE
  • ansible

Docker は必須では無いのだが、他のアプリケーションやら何やらがDocker利用の為、
tornadoもDocker上で動作するように作成する。

環境作り

tornadoをDocker上で動かす、ということでまずはtornadoが入ったDockerコンテナを作らなくてはならない。
CentOS7上にDocker環境を作るに当たってはメインで扱う内容では無いので、それぞれインストールして頂くか
拙速のansible playbookを利用されたし。

tornado DockerFile 作り

こんな風にpython3.6 ベースで作ってみた。

  • DockerFile
FROM python:3.6

ENV PYTHONUNBUFFERED 1
ENV DOCKER true

RUN apt-get update && apt-get install -y vim python3-dev
RUN apt-get clean
RUN apt-get autoremove

ADD ./requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN /sbin/init

但し、最後のRUNを見るとおり、tornado appは何も起動していない。
アプリケーションの追加は別の項で触れることにする。

ちなみに配置は以下の通り。
DockerFile内部でtornadoをインストールしても良いが
tornadoを本格的に利用するに辺り、Pypiモジュールが増えることも考えられるため
pip 関連は requirements.txt として外に出しておくことにする

$ ls
Dockerfile  __init__.py  requirements.txt
$ cat requirements.txt
tornado==4.5.3

docker-compose.yml

DockerFile を作成したのでbuid すれば利用できるが
敢えてdocker-composeで扱えるようにする。
現時点では一つのImageしか扱わないので全くcomposeである必然性は無いが。

  • docker-compose.yaml
version: "3"
services:
  app:
    restart: always
    build: ./
    ports:
      - 8888:8888

これでとりあえず docker-compose up -d とか docker-compose build で動く。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?