我有一个可以在后台运行很长时间的 python 脚本,并且正在尝试找到一种从中获取状态更新的方法。基本上我们正在考虑向它发送一个 SIGUSR1 信号,然后让它报告状态更新。
在 Python 中捕捉信号不是问题,有很多关于此的信息。
但是如何将信息返回给发起信号的进程呢?似乎没有办法通过接收进程找出启动进程的pid,这可以提供一种发回信息的方法。在这里一条回复消息就足够了(在“忙于上传;现在是 55%;将在这个时候完成”);持续更新会很棒但没有必要。
我想出的是将此数据写入具有预定名称的临时文件 - 存在留下陈旧文件的问题,然后需要某种清理程序。但这听起来像一个黑客。有没有更好的可用?
正在运行的进程发出信号的方式无关紧要,不一定是kill -SIGUSR1 pid
. 任何与之交流的方式都可以。只要可以从主进程运行后启动的新进程启动通信,可能以不同的用户身份运行。