テクデップ(Techdep)

コンピュータ、プログラミング、DTP(InDesign)に関する備忘録

Pythonの軽量ウェブフレームワークBottleのデーモン化

Pythonの軽量ウェブフレームワークBottleは非常に便利である。10行にも満たないコードでウェブサーバーが構築できるけれども、せっかく立ち上げたプロセスはデーモン化してないとログアウトしたらkillされる。 今回はこれをデーモン化したい。今回はBottleのデーモン化に特化したBottleDaemonでやってみよう。

BottleDaemonは文字通りBottleのデーモン化に特化したパッケージ。構成ファイルも一つだけというモノシリックな構造だ。

BottleDaemon 0.1.1 : Python Package Index

必要パッケージの導入

次の二つを導入する。

 $ pip install python-daemon
 $ pip install Bottledaemon

ソースコードの書き換え

BottleDaemonの公式ソースコードに少し手を加えたものが以下。通常のBottleアプリケーションと違って、先頭行にbottledaemonのimportを宣言しておく必要がある。

daemon_run()でデーモンとして立ち上げる。公式では何も引数がないが、この例のようにホストやポート番号の指定ができる。

from bottledaemon import daemon_run
from bottle import route

@route("/hello")
def hello():
   return "Hello World"
 
if __name__ == "__main__":
  daemon_run(host='localhost', port=8080)

起動と停止

以下の様に簡単にできる。

$ python exapmle.py start
$ python example.py stop

デーモン化にはそのためのコードを自前で用意したり、簡単にできる場合でも設定ファイルを編集したりと色々準備が必要だが、Bottleに関しては設定ファイルすらも不要でデーモン化ができる。

参考文献

Bottle: Python Web Framework — Bottle 0.13-dev documentation

BottleDaemon 0.1.2 : Python Package Index