このスクリプトで python-daemon を使用して、バックグラウンドでコードの実行を開始および停止しようとしています。(最終的な目標は、これを AWS インスタンスに含めることです)。
何らかの理由で私を逃れる pid ファイルが生成されておらず、プロセスが実行されていないと思います。
Python スクリプト:
#standard python libs
import logging
import time
#third party libs
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 = '/Users/NAME/Documents/workspace/RandomThings/testdaemon.pid'
self.pidfile_timeout = 5
def run(self):
while True:
#Note that logger level needs to be set to logging.DEBUG before this shows up in the logs
logger.debug("Debug message")
logger.info("Info message")
logger.warn("Warning message")
logger.error("Error message")
#Main code goes here ...
sst=myClass()
sst.run()
time.sleep(10)
app = App()
logger = logging.getLogger("DaemonLog")
logger.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler = logging.FileHandler("/Users/NAME/Documents/workspace/RandomThings/testdaemon.log")
handler.setFormatter(formatter)
logger.addHandler(handler)
daemon_runner = runner.DaemonRunner(app)
#This ensures that the logger file handle does not get closed during daemonization
daemon_runner.daemon_context.files_preserve=[handler.stream]
daemon_runner.do_action()
シェル(OSX)で私は:
python daemon.py start >>>> これは実行されますが、pid ファイルは作成されません (sudo も試しました) python daemon.py stop >>>> はエラーを返します:
トレースバック (最新の呼び出しが最後): ファイル "SST_daemon.py"、68 行目、daemon_runner.do_action() ファイル "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/daemon /runner.py"、189 行目、do_action func(self) ファイル内"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/daemon/runner.py"、152 行目、 in _stop u"PID file %(pidfile_path)r not locked" % vars()) daemon.runner.DaemonRunnerStopFailureError: PID ファイル '/Users/josefernandes/Documents/workspace/RandomThings/testdaemon.pid' not locked
私はこれを何時間も修正しようとしましたが、これまでのところ結果はありません。
これが機能しない理由は何ですか?
どんな助けでも大歓迎です!!!!!