uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

argparseを使ってみる

pythonでデーモンを作る機会があるのでバックグラウンドだけしか動かなせないとデバッグしづらいのでフォアグラウンドでも動くようにスクリプトを作ろうと思う。

引数をとってフォアグラウンド/バックグラウンドの切り替えをするためにargparseを使ってみる。

argparseはpython2.7から導入された標準モジュールで2.6以前で使われていたoptparseモジュールの代わりとなるものです。

argparseのドキュメントを見るとoptparseを完全に置き換えるものらしいので互換性は高く、そして高機能です。

#!/usr/bin/env python2.7
# -*- coding:utf-8 -*-

from daemon import DaemonContext
from daemon.pidfile import PIDLockFile
import logging
import logging.config
import time
import argparse

logging.config.fileConfig("logging.conf")
logger = logging.getLogger("app")

logger.info('start daemon')

parser = argparse.ArgumentParser(version='1.0')
parser.add_argument('-d', action="store_true",  default=False,
        help='daemonize')
args = parser.parse_args()
if args.d:
    dc = DaemonContext(
    pidfile = PIDLockFile('/tmp/lost.pid'),
    files_preserve = [logger.handlers[0].stream],
    with dc:
        while True:
            logger.info('daemon working')
            time.sleep(2)
else:
    while True:
        logger.info('daemon working')
        time.sleep(2)

argparseを使ってみた - そこはかとなく書くよ。 argparse – コマンドラインオプションと引数の解析 - Python Module of the Week