Не удается получить доступ к серверу Python, работающему как служба Windows - PullRequest
2 голосов
/ 07 мая 2009

Я написал Python TCP / IP-сервер для внутреннего использования, используя win32serviceutil / py2exe для создания службы Windows.

Я установил его на компьютер под управлением Windows XP Pro SP3. Однако я не могу подключиться к нему, когда он работает как сервис. Я могу подтвердить, что это привязка к адресу / порту, потому что я получаю конфликт, когда пытаюсь связать этот адрес / порт с другим приложением. Далее я проверил настройки брандмауэра Windows и добавил соответствующие исключения. Если я запускаю сервер как простое консольное приложение, все работает как положено. Однако, когда я запускаю его как сервис, он не работает.

Я смутно помню, как сталкивался с этой проблемой раньше, но на всю жизнь не могу вспомнить ни одной детали.

Предложения, кто-нибудь?

Ответы [ 3 ]

1 голос
/ 24 мая 2009

Прежде всего, при внедрении службы Windows обязательно добавьте правильное ведение журнала.

Мои рабочие потоки прерывались из-за исключения: «Операция с сокетом не может завершиться без блокировки.»

Решением было просто позвонить sock.setblocking(1) после подтверждения подключения.

1 голос
/ 07 мая 2009

Возможно, программа может быть прервана сразу после инициализации. Пожалуйста, проверьте, постоянно ли слушает запросы.

netstat -an |find /i "listening"

И проанализировать командную строку, проанализированную с программами. Вы можете использовать procxp для этого.

0 голосов
/ 07 мая 2009

Убедитесь, что служба работает под учетной записью Nertwork, а не с учетной записью локальной системы. Последний не имеет доступа к сети и является пользователем по умолчанию для запуска служб. Вы можете проверить это, зайдя в сервисное приложение в административном инструменте в меню «Пуск» и выполнив поиск вашего сервиса. Если вы щелкнете сервис правой кнопкой мыши, вы сможете перейти в свойства и изменить пользователя, под которым он запущен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...