Bottle Web フレームワークを使用してアプリケーションを構築しています。
シグナル USR1 と USR2 をキャッチして、ボトル サーバー以外の作業を行いたいと考えています。主に、いくつかのオブジェクトを存続させたいため、Web サーバーをシャットダウンせずに構成をリロードできるようにしたいと考えています。
私は自分でシグナル(USR1とUSR2)を処理しようとしました:
signal.signal(signal.SIGUSR1, my_handler)
問題は、sigUSR1 を受信すると、ボトル Web サーバーが次のトレースでクラッシュすることです。
Traceback (most recent call last):
File "giomanager.py", line 46, in <module>
run( giomanager, port=60200 )
File "/usr/lib/python2.7/dist-packages/bottle.py", line 2389, in run
server.run(app)
File "/usr/lib/python2.7/dist-packages/bottle.py", line 2087, in run
srv.serve_forever()
File "/usr/lib/python2.7/SocketServer.py", line 225, in serve_forever
r, w, e = select.select([self], [], [], poll_interval)
select.error: (4, 'Interrupted system call')
なぜこれが起こっているのか分かりますか?ボトルがそれらの信号を受信しないようにすることは可能ですか?