0

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')

なぜこれが起こっているのか分かりますか?ボトルがそれらの信号を受信しないようにすることは可能ですか?

4

1 に答える 1