我有一个使用psutil运行某些twistd ...
命令的Python程序。 twistd
生成并守护进程并编写foo.pid
,我可以从中读取pid。
它还设置为在进程终止时清除此pid文件,这意味着生成的进程可能完成得太快而无法读取pid。
如果 twistd
无法写入pid文件,它会返回错误代码,因此我可以假设没有pid文件且没有扭曲的错误代码意味着该进程已成功生成并且很快终止,但整个过程看起来很脆弱。更不用说必须等待pid文件填充内容,同时还要处理它被填充但一次又一次删除的可能性。
有更好的方法吗?
答案 0 :(得分:2)
没有更好的方法(或者如果有的话,很难或不可能知道它是什么,因为你没有描述你正在解决的一般问题,你刚才描述了你遇到的问题使用您已经选择的解决方案。)
有open feature request使twistd
更适合这种用途。如果你帮忙解决它,那么你将能够按照你想要的方式做到这一点。
答案 1 :(得分:0)
我不确定您使用psutil的部分是什么,但只是从Twisted中调用spawnProcess会触发一个知道其pid的IReactorProcess
。
如果你正在呼唤twistd
,那么如果你愿意的话,肯定有办法在同一个过程中做你正在做的事情。