'double fork'を使用して、古いプロセスにバインドされていない新しいバックグラウンドプロセスでコードを実行できます。たとえば、このレシピを参照して、必要以上に説明的なコメントを付けてください。
これをWebサイトのバックグラウンドタスクを実行する主要な方法としてはお勧めしません。たとえば、PythonがApacheプロセスに埋め込まれている場合、必要以上にフォークすることになります。デーモンを個別に呼び出すことをお勧めします(同様の低特権ユーザーのすぐ下)。
Apacheサーバーを介してスクリプトを一度開始した後、スクリプトの実行を停止するにはどうすればよいですか?
2番目のフォークにデーモンプロセスのプロセス番号(pid)をファイルに書き込んでから、そのファイルからpidを読み取り、終了信号(os.kill(pid, signal.SIG_TERM)
)を送信します。
私は混乱していますか?
それが問題です!ある種の異常なネットサービスのために、Webインターフェイスとは異なるポートで応答するバックグラウンドプロセスを作成しようとしていると想定しています。通常のWebリクエストへの応答について話しているだけの場合は、Apacheを使用してソケットを処理し、一度に1つのリクエストを処理する必要があります。