Python3 Bottleフレームワーク入門(その8)- デーモン化
2017/08/26
2020/03/15
タグ: Bottle, Python, デーモン化, フレームワーク
Bottleはコマンドラインで起動すると終了でCTRL+Cを入れるまでコマンドプロンプトが戻ってきません。これでは不便と考えるなら自前でデーモン化してみましょう。最近ではBottleDaemonというモジュールもありますがオリジナルで色々開発しているとそのままではBottleDaemonが使えないケースが多いです。そんなときは自前でデーモン化処理を作ってしまいましょう。それほど難しいものではありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
from bottle import Bottle,template,abort import os,sys,time app = Bottle() @app.route('/hello/<name>') def index(name): return template('<b>Hello {{name}}</b>!', name=name) def daemon_serv(): pid = os.fork() try: if pid != 0: fd = open('./serv.pid','w') fd.write(str(pid) + '\n') fd.close() sys.exit() except OSError as e: sys.stderr.write("BottleFork: Failed: %d (%s)\n" % (e.errno, e.strerror)) sys.exit(1) while 1: app.run(server='paste',host="0.0.0.0",port='8080') if __name__ == "__main__": daemon_serv() |
◯ デーモンの起動と停止
1 2 |
$ start-serv $ stop-serv |
◯ 起動プログラム
1 2 3 4 5 6 7 |
#!/bin/sh ps -e|grep python if [ $? -eq 1 ]; then python mthread.py 2> /dev/null else echo "Serverを停止させてください" fi |
◯ 停止プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/sh kill -9 `cat ./serv.pid` case $? in 0) rm ./serv.pid ;; 1) echo "プロセスを正しく終了できませんでした。" exit 1 ;; esac exit 0 |
- Python Bottle Framework入門 全13回
- 1.基礎編サーバ起動
- 2.リクエストメソッド
- 3.ORM Peewee (MySQL)
- 4.ORM Peewee CRUD
- 5.Cookie And Session
- 6.Abort and Redirect
- 7.マルチスレッドWEBサーバ
- 8.デーモン化
- 9.Json
- 10.WSGI on SSL
- 11.Apache連携起動(外部WSGI) SSL接続
- 12.Apache連携起動(ReverseProxy)SSL接続
- 13.hprox連携起動(ReverseProxy)SSL接続&HTTP2対応