Это может быть или не быть проблемой кодирования. Это также может быть проблемой xinetd deamon, я не знаю.Управление отключением клиента python xinetd
У меня есть скрипт python, который запускается с Linux-сервера, на котором запущен xinetd. Xinetd был настроен так, чтобы разрешить только один экземпляр, поскольку я хочу, чтобы только одна машина могла подключаться к службе, что также ограничено IP.
В настоящее время, когда клиент подключается к xinetd, служба работает правильно, и скрипт начинает отправлять свой результат на клиентскую машину. Однако, когда клиент отключается (т. Е. Из-за перезагрузки), процесс все еще сохраняется на сервере, и это блокирует возможность подключения клиента после завершения его перезагрузки или так далее.
В: Как я могу обнаружить на python, что клиент отключился. Возможно, я смогу проверить, не перестает ли читать stdout от клиента (а затем выходить из сценария), или есть ли большой способ eaiser в xinetd, чтобы дочерний процесс был убит, когда клиент отключился?
(я использую Python 2.4.3 на RHEL5 Linux. - нужны решения для 2.4, но 3.1 решения было бы полезно также знать)
Спасибо, что сработало удовольствие. При дальнейшем осмотре я фактически поймал все исключения где-то еще в коде, и поэтому sighup не передавался. – Sirex
Извините, что выкалываете это, но я только что обернулся, чтобы положить это вживую. Как ни странно, это действительно не работало, как я думал. Процесс умирает при отправке сигнала один (kill -1), что означает, что в соответствии с этим ответом он должен умереть, когда xinetd отключен, но он доцент. Первоначальная проблема заключалась в том, что дочерний процесс python, запущенный xinetd при подключении клиента, остается в живых, даже когда клиент отключился. Эта проблема все еще существует :-( Мой процесс python просто печатает вывод на stdout (и из-за xinetd, на экран клиента) - мне нужно изменить конфигурацию xinet prehaps? –
Sirex