Drkcore

22 03 2012 Python Tweet

pythonコードをデーモン化するモジュール

みつけたのでソースコードを読んでみたら、かなり参考になった。

  • daemonize 1.1

51行目

resourceモジュールを使っているのを見るのははじめてだ。

for fd in range(resource.getrlimit(resource.RLIMIT_NOFILE)[0]):
    try:
        os.close(fd)
    except OSError:
        pass

57行目

dupすると未使用の中で最小のディスクリプタに割り当てられんのか。

os.open(devnull, os.O_RDWR)
os.dup(0)
os.dup(0)

85行目

signal.signal(signal.SIGTERM, partial(sigterm, pid))

部分関数使っている。ドキュメントによるとsignal.signalの第二引数は

handler は二つの引数とともに呼び出されます: シグナル番号、および現在のスタックフレーム (None またはフレームオブジェクト

で、部分関数になっているsigtermは以下のように3引数を受け取る関数。第一引数はロックファイル名。

def sigterm(pid, signum, frame):
    logging.info("Caught signal %d. Stopping daemon." % signum)
    os.remove(pid)
    sys.exit(0)

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021