2

DaemonRunner を使用して、pid ファイルでデーモン プロセスを作成するスクリプトがあります。問題は、誰かが現在実行中のプロセスを停止せずに開始しようとすると、黙って失敗することです。既存のプロセスを検出し、最初にそれを停止するようにユーザーに警告する最良の方法は何ですか? pidfileをチェックするのと同じくらい簡単ですか?

私のコードは次の例のようになります:

#!/usr/bin/python
import time
from daemon import runner

class App():
    def __init__(self):
        self.stdin_path = '/dev/null'
        self.stdout_path = '/dev/tty'
        self.stderr_path = '/dev/tty'
        self.pidfile_path =  '/tmp/foo.pid'
        self.pidfile_timeout = 5
    def run(self):
        while True:
            print("Howdy!  Gig'em!  Whoop!")
            time.sleep(10)

app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()

私の実際のコードを確認するには、 https ://github.com/jgillick/LendingClubAutoInvestor のInvestor.py を参照してください。

4

2 に答える 2

0

これは私が使用することにした解決策です:

lockfile = runner.make_pidlockfile('/tmp/myapp.pid', 1)
if lockfile.is_locked():
    print 'It looks like a daemon is already running!'
    exit()

app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()

これはベストプラクティスですか、それとももっと良い方法がありますか?

于 2013-04-27T01:13:52.420 に答える