Я создаю приложение, используя веб-футляр для бутылок.Как предотвратить попадание бутылки на обработку сигналов
Я хотел бы поймать сигналы USR1 и USR2, чтобы сделать некоторые работы в стороне от сервера бутылок. В основном я хочу иметь возможность перезагрузить конфигурацию, не закрывая веб-сервер, потому что хочу, чтобы некоторые объекты работали.
Я пытался обрабатывать сигналы (usr1 и usr2) на моей помощью:
signal.signal(signal.SIGUSR1, my_handler)
Проблема заключается в том, что при получении SIGUSR1, бутылка веб-сервер падает со следующим следом:
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')
У вас есть идея, почему это происходит? Можно ли предотвратить прием бутылки от этих сигналов?
Благодарим вас за ответ. Я не планировал использовать бутылку на производстве, но я где-то видел, что ее можно встроить в другой веб-сервер. Я буду следовать вашему предложению и обработать свое событие, используя файлы и pyinotify. – mistyrouge
Прохладно, счастливо, что это помогло. И спасибо за упоминание pyinotify; Раньше я не слышал об этом - возможно, это спасло мне несколько часов, когда мне было что-то похожее на что-то подобное. –