让 python 进程回话 SIGUSR1 调用
Posted
技术标签:
【中文标题】让 python 进程回话 SIGUSR1 调用【英文标题】:Have python process talk back on SIGUSR1 call 【发布时间】:2012-10-12 15:27:25 【问题描述】:我有一个可以在后台长时间运行的 python 脚本,并且正在尝试找到一种从中获取状态更新的方法。基本上我们正在考虑向它发送一个 SIGUSR1 信号,然后让它报告状态更新。
在 Python 中捕捉信号不是问题,有很多相关信息。
但是如何将信息返回给发起信号的进程呢?似乎没有办法通过接收进程找出启动进程的pid,这可以提供一种发回信息的方法。一条回复消息在这里就足够了(在“忙于上传;现在是 55%;将在这个时候完成”);持续更新会很棒,但没有必要。
我想出的是将此数据写入具有预定名称的临时文件 - 存在留下陈旧文件的问题,然后需要某种清理例程。但这听起来像一个黑客。有没有更好的?
运行进程的信号方式无关紧要,不一定是kill -SIGUSR1 pid
。任何与之交流的方式都可以。只要可以从主进程运行后启动的新进程启动通信,可能以不同的用户身份运行。
【问题讨论】:
【参考方案1】:信号并非设计为允许传递数据的通用进程间通信机制。他们只能提供通知。目标进程的响应可能相当普遍(例如,将输出生成到发送者知道要查看的特定文件),但是将数据直接传递回发送者将需要不同的机制,如管道、共享内存、消息队列等。还要注意,一般来说,接收信号的进程无法真正确定是谁发送了信号,因此它也不知道在哪里发送响应。
【讨论】:
谢谢,在阅读了有关信号的信息后,我已经害怕了。还有其他技术可以做到这一点吗?否则我确实会求助于使用 tmp 文件。以上是关于让 python 进程回话 SIGUSR1 调用的主要内容,如果未能解决你的问题,请参考以下文章