我正在使用python-daemon
模块来管理我的Python
脚本的守护进程。
但是,我在运行脚本时遇到了一个头痛的问题,我根本就搞不懂。我也不知道如何开始调试它。在
我有密码:
def run_application():
#Do something here...
class App():
def __init__(self):
self.stdin_path = '/dev/null'
self.stdout_path = 'stdout.txt'
self.stderr_path = 'stdlog.log'
self.pidfile_path = 'filelock.pid'
self.pidfile_timeout = 5
def run(self):
run_application()
app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()
运行时,它总是将以下内容写入stdlog.log
:
所以当试图锁定filelock.pid
时,它似乎超时了。我不知道为什么会这样。我删除了filelock.pid
,我更改了权限;每次都是相同的错误。在
我如何开始调试这个???我不知所措。在
我正在使用python-daemon version 1.6
(如果重要的话)。在
更新:
按照建议here,我现在看到已经有一个进程在运行。现在我如何确定正在运行的守护进程的PID。在
我同意@ExploWare的观点,因为他演示了如何捕获那些
LockTimeout
异常。在因此,作为一种调试和查看是什么进程持有这个锁的方法,这里有一段外部代码可以运行。。。在
那么哪个进程获得了这个锁(如果有的话)?在
^{pr2}$当我们的PIDLockFile实例尝试“acquire”时
因此,使用@ExploWare的异常捕捉。在
我找到了一个很好的方法来处理这个异常,所以也许它对您也有帮助:
添加
from lockfile import LockTimeout
并将
daemon_runner.doaction()
围成这样相关问题 更多 >
编程相关推荐