バックグラウンドで長時間実行できる Python スクリプトがあり、そこからステータス更新を取得する方法を見つけようとしています。基本的には、SIGUSR1 シグナルを送信して、ステータスの更新を報告することを検討しています。
Python でシグナルをキャッチすることは問題ではありません。それに関する多くの情報があります。
しかし、シグナルを開始したプロセスに情報を戻すにはどうすればよいでしょうか? 情報を送り返す方法を提供できる、受信プロセスによる開始プロセスのpidを把握する方法がないようです。ここでは 1 つの返信メッセージで十分です (「アップロード中です。現在 55% です。その時点で終了します」という調子で)。継続的な更新は素晴らしいことですが、必須ではありません。
私が思いついたのは、このデータを所定の名前の一時ファイルに書き込むことです-古いファイルを残すという問題があり、その場合は何らかのクリーンアップルーチンが必要です。しかし、それはハックのように聞こえます。利用可能なより良いものはありますか?
実行中のプロセスが通知される方法は問題ではなく、そうである必要はありませんkill -SIGUSR1 pid
。それと通信する方法は何でも構いません。メインプロセスの実行後に開始された新しいプロセスから通信を開始できる限り、別のユーザーとして実行されている可能性があります。