Python скрипт как служба windows

Обновлено: 07.07.2024

Я делаю набросок архитектуры для набора программ, которые совместно используют различные взаимосвязанные объекты, хранящиеся в базе данных. Я хочу, чтобы одна из программ действовала как служба, обеспечивающая интерфейс более высокого уровня для операций с этими объектами, а другие программы - для доступа к объектам через эту службу.

В настоящее время я стремлюсь к Python и фреймворку Django в качестве технологий для реализации этой службы. Я почти уверен, что понял, как демонизировать программу Python в Linux. Однако это необязательный элемент спецификации, что система должна поддерживать Windows. У меня мало опыта программирования для Windows и вообще нет опыта работы со службами Windows.

Можно ли запускать программы Python как службу Windows (т. е. запускать ее автоматически без входа пользователя)? Мне не обязательно реализовывать эту часть, но мне нужно приблизительное представление, как это будет сделано для того, чтобы решить, следует ли проектировать по этим направлениям.

Edit: Спасибо за все ответы, они довольно исчерпывающие. Я хотел бы узнать еще кое-что: Как Windows узнает о моей службе? Могу ли я управлять этим с помощью собственных утилит Windows? Что эквивалентно помещению сценария запуска / остановки в /etc/init.d?

Да, ты можешь. Я делаю это с помощью библиотек pythoncom, которые входят в состав ActivePython или могут быть установлены с pywin32 (Python для расширений Windows).

Это базовый каркас простого сервиса:

Ваш код будет идти в методе main() - обычно с каким-то бесконечным циклом, который может быть прерван проверкой флага, установленного вами в методе SvcStop .

После кодирования, как мне сказать Windows запустить это как службу? @Kit: запустите ваш скрипт из командной строки с параметром «install». После этого вы сможете увидеть свое приложение в списке служб Windows, где вы можете запустить его, остановить или настроить автоматический запуск. Вы особо упоминаете pythoncom и импортируете его в свой пример кода. Проблема в том, что вы никогда не используете pythoncom где-либо в своем примере кода, вы только импортируете его. Зачем уделять ему особое внимание, а затем не показывать его использование? Почему для socket.setdefaulttimeout(60) есть? Это нужно для службы или просто случайно скопировано из какой-то существующей службы? :)

Возможно, это вызвано проблемой venv, потому что служба Windows запускает вашу службу с помощью exec PROJECT\venv\Lib\site-packages\win32\pythonservice.exe .

Вы можете использовать powershell или cmd , чтобы протестировать свою службу и найти более подробную информацию об ошибке.

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

Этот ответ является плагиатором из нескольких источников на StackOverflow - большинство из них указано выше, но я забыл о других - извините. Это просто, и сценарии работают «как есть». Для выпусков вы тестируете сценарий, затем копируете его на сервер и останавливаете / запускаете соответствующую службу. И он должен работать для всех языков сценариев (Python, Perl, node.js), а также для пакетных сценариев, таких как GitBash, PowerShell, и даже для старых сценариев летучей мыши DOS. pyGlue - это связующее звено между службами Windows и вашим скриптом.

Теперь нужно немного отредактировать, и вы не хотите, чтобы все ваши сервисы назывались pyGlue. Итак, есть сценарий (build.sh) для вставки битов и создания настраиваемого «pyGlue» и создания «.exe». Это файл .exe, который устанавливается как служба Windows. После установки вы можете настроить его на автоматический запуск.

Установка - скопируйте '.exe' сервер и скрипт в указанную папку. Запустите .exe от имени администратора с опцией «установить». Откройте службы Windows в качестве администратора и запустите службу. Для обновления просто скопируйте новую версию скрипта и Остановите / Запустите службу.

Теперь все серверы разные - разные установки Python, разные структуры папок. Я поддерживаю папку для каждого сервера с копией pyGlue.py и build.sh. И я создаю сценарий serverBuild.sh для восстановления всей службы на этом сервере.

Следите за PySvc.py

изменение папки dll

Я знаю, что это старое, но я застрял на этом навсегда. Для меня эта конкретная проблема была решена путем копирования этого файла - pywintypes36.dll

Из -> Python36 \ Lib \ site-packages \ pywin32_system32

Кому -> Python36 \ Lib \ site-packages \ win32

Хотя пару недель назад я проголосовал за выбранный ответ, тем временем я еще больше боролся с этой темой. Кажется, что иметь специальную установку Python и использовать специальные модули для запуска скрипта как службы - это просто неправильный путь. А как насчет переносимости и тому подобного?

Я наткнулся на замечательный Non-sucking Service Manager, который сделал работу со службами Windows действительно простой и разумной. Я подумал, что, поскольку я могу передавать параметры установленной службе, я могу с таким же успехом выбрать свой исполняемый файл Python и передать свой скрипт в качестве опции.

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

я набрасываю архитектуру для набора программ, которые совместно используют различные взаимосвязанные объекты, хранящиеся в базе данных. Я хочу, чтобы одна из программ действовала как служба, которая предоставляет интерфейс более высокого уровня для операций с этими объектами, а другие программы для доступа к объектам через эту службу.

в настоящее время я нацелен на Python и Django framework в качестве технологий для реализации этой службы. Я уверен, что я понимаю, как демонизировать Python программы в Linux. Однако это необязательный элемент спецификации, который система должна поддерживать Windows. У меня мало опыта программирования Windows и никакого опыта работы со службами Windows.

можно ли запускать программы на Python как служба Windows (у меня. е. запустить его автоматически без входа пользователя в систему)? мне не обязательно будет реализовывать эту часть, но мне нужна грубая идея, как это будет сделано, чтобы решить, следует ли проектировать вдоль этих русло.

Edit: Спасибо за все ответы до сих пор, они довольно полные. Я хотел бы знать еще одну вещь: как Windows знает о моей службе? Могу ли я управлять им с помощью собственных утилит Windows? что эквивалентно помещению скрипта start/stop в /etc/init.Ди?

Да, вы можете. Я делаю это с помощью библиотек pythoncom, которые входят в комплект ActivePython или может быть установлен с pywin32 (Python для расширений Windows).

это основной скелет для простой службы:

ваш код будет идти в main() метод-обычно с каким-то бесконечным циклом, который может быть прерван проверкой флага, который вы устанавливаете в SvcStop метод

хотя я поддержал выбранный ответ пару недель назад, тем временем я боролся намного больше с этой темой. Похоже, что специальная установка Python и использование специальных модулей для запуска скрипта в качестве службы-это просто неправильный способ. Как насчет переносимости и тому подобного?

я наткнулся на замечательный Non-сосание Service Manager, что сделало его очень простым и здравомыслящим, чтобы иметь дело со службами Windows. Я подумал, что, поскольку я могу передать варианты установленная служба, я мог бы также выбрать свой исполняемый файл Python и передать свой скрипт в качестве опции.

Я еще не пробовал это решение, но я сделаю это прямо сейчас и обновлю этот пост по ходу процесса. Мне также интересно использовать virtualenvs в Windows, поэтому я могу рано или поздно придумать учебник и ссылку на него здесь.

существует несколько альтернатив для установки в качестве службы практически любого исполняемого файла Windows.

метод 1: Используйте instsrv и srvany из rktools.exe

для Windows Home Server или Windows Server 2003 (также работает с WinXP),Средства Набора Ресурсов Windows Server 2003 поставляется с утилитами, которые могут быть использованы в тандеме для этого, называется instsrv.exe и srvany.exe. См. эту статью Microsoft KB KB137890 для получения подробной информации о том, как использовать эти utils.

для Windows Home Server Есть отличная удобная оболочка для этих утилит с именем aptly"Любой Установщик Службы".

Метод 2: Используйте ServiceInstaller для Windows NT

есть еще одна альтернатива с помощью ServiceInstaller для Windows NT (скачать-может здесь) С доступны инструкции python. Вопреки имя, он работает как с Windows 2000, так и с Windows XP. Ниже приведены некоторые инструкции по установке скрипта python в качестве службы.

установка скрипта Python

запустите ServiceInstaller для создания нового услуга. (В данном примере это предполагается, что python установлен на c:\python25)

после установки, откройте контроль Апплет служб панели, выберите и запустить PythonTest услуга.

после моего первоначального ответа я заметил, что на SO уже размещены тесно связанные вопросы и ответы. См. также:

Я рисую архитектуру для набора программ, которые совместно используют различные взаимосвязанные объекты, хранящиеся в базе данных. Я хочу, чтобы одна из программ выступала в качестве службы, которая обеспечивает интерфейс более высокого уровня для операций над этими объектами, а другие программы - для доступа к объектам через эту службу.

В настоящее время я нацелен на создание Python и Django как технологий для реализации этого сервиса. Я почти уверен, что я понимаю, как демонизировать программу Python в Linux. Тем не менее, это необязательный элемент спецификации, который система должна поддерживать Windows. У меня мало опыта программирования Windows, и у меня нет опыта работы с службами Windows.

Можно ли запускать программы Python в качестве службы Windows (т.е. запускать ее автоматически без входа пользователя)? Я не обязательно буду реализовывать эту часть, но мне нужно понять, как это будет сделано для того, чтобы решить, следует ли разрабатывать эти строки.

Изменить: Спасибо за все ответы до сих пор, они довольно полные. Я хотел бы узнать еще одно: Как Windows знает о моем сервисе? Могу ли я управлять им с помощью родных утилит Windows? Что эквивалентно помещению start/stop script в/etc/init.d?

ОТВЕТЫ

Ответ 1

Да, вы можете. Я использую библиотеки pythoncom, входящие в состав ActivePython или могут быть установлены с pywin32 (расширения для Python для Windows).

Это базовый скелет для простой службы:

Ваш код будет идти в методе main() - обычно с каким-то бесконечным циклом, который может быть прерван проверкой флага, который вы установили в методе SvcStop

Ответ 2

Хотя я выделил выбранный ответ пару недель назад, тем временем я больше боролся с этой темой. Похоже, что у вас есть специальная установка на Python и использование специальных модулей для запуска script, поскольку сервис - это просто неправильный путь. Как насчет переносимости и т.д.

Я наткнулся на замечательный Non-sucking Service Manager, который сделал его очень простым и разумным для работы с Windows Services. Я понял, что, поскольку я мог передавать параметры установленному сервису, я мог бы просто выбрать исполняемый файл Python и передать мой script в качестве опции.

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

Ответ 3

Существует несколько альтернатив для установки в качестве службы практически любого исполняемого файла Windows.

Способ 1: Использовать instrrv и srvany из rktools.exe

Для Windows Home Server или Windows Server 2003 (также работает с WinXP), Windows Server 2003 Resource Kit Tools поставляется с утилит, которые могут для этого используется тандема, называемая instsrv.exe и srvany.exe. Подробнее о том, как использовать эти утилиты, см. В статье Microsoft KB KB137890.

Для Windows Home Server существует большая удобная оболочка для этих утилит с меткой "" Любой установщик услуг".

Способ 2. Использовать ServiceInstaller для Windows NT

Существует другая альтернатива, использующая ServiceInstaller для Windows NT ( скачать можно здесь) с доступные инструкции python. В отличие от имени, он работает как с Windows 2000, так и с Windows XP. Ниже приведены некоторые инструкции по установке python script в качестве службы.

Установка Python script

Запустите ServiceInstaller, чтобы создать новый оказание услуг. (В этом примере это предположил, что python установлен на C:\Python25)

После установки откройте Control Апплет Panel Services, выберите и запустите службу PythonTest.

После моего первоначального ответа я заметил, что были тесно связанные Q & A, уже опубликованные на SO. См. Также:

Ответ 4

Самый простой способ добиться этого - использовать встроенную команду sc.exe:

Рекомендации:

Ответ 5

Самый простой способ - использовать: NSSM - диспетчер служб несвязывания:

2 - установить программу python в качестве службы: Win prompt as admin

c:> nssm.exe установить WinService

3 - На консоли NSSM:

Каталог автозагрузки: C:\Python27

4 - проверить созданные службы на services.msc

Ответ 6

Пошаговое объяснение, как заставить его работать:

1- Сначала создайте файл python в соответствии с основным скелетом, упомянутым выше. И сохраните его на пути, например: "c:\PythonFiles\AppServerSvc.py"

2 - На этом этапе мы должны зарегистрировать наш сервис.

Запустите командную строку как администратор и введите:

sc создать TestService binpath = "C:\Python36\Python.exe c:\PythonFiles\AppServerSvc.py" DisplayName = "TestService" start = auto

первым аргументом binpath является путь файла python.exe

Второй аргумент binpath - это путь к вашему файлу python, который мы уже создали

Не пропустите, что вы должны поместить одно место после каждого знака < =.

Тогда, если все в порядке, вы должны увидеть

Теперь ваша служба python установлена ​​как служба Windows. Вы можете увидеть его в Service Manager и в реестре по адресу:

3- Хорошо. Вы можете начать свою службу в сервис-менеджере.

Вы можете выполнить каждый файл python, который предоставляет этот сервисный скелет.

Ответ 7

Я начал хостинг как сервис с pywin32.

Error 1053: The service did not respond to the start or control request in a timely fashion.

Error 7009: Timeout (30000 milliseconds) waiting for the <ServiceName> service to connect.

Я много боролся с pywin, но в итоге использовал NSSM, как было предложено в этом ответе. Было очень легко перейти на него.

Ответ 8

nssm в Python 3+

(Я преобразовал свой .py файл в .exe с помощью pyinstaller)

NSSM: как уже было сказано

На консоли NSSM:

путь: путь\к\вашему\program.exe

Аргументы: пусто

Ответ 9

Принятый ответ с использованием win32serviceutil работает, но сложен и усложняет отладку и изменения. Намного проще использовать NSSM (диспетчер неосасывающих услуг). Вы пишете и удобно отлаживаете обычную программу на Python, и когда она наконец работает, вы используете NSSM, чтобы установить ее как службу менее чем за минуту:

В командной строке с nssm.exe install NameOfYourService (admin) вы запускаете nssm.exe install NameOfYourService и вводите следующие параметры:

  • путь: (путь к python.exe, например C:\Python27\Python.exe )
  • Аргументы: (путь к вашему скрипту Python, например, c:\path\to\program.py )

Ответ 10

Возможно, это вызвано проблемой venv, потому что служба Windows запускает вашу службу с помощью exec PROJECT\venv\Lib\site-packages\win32\pythonservice.exe .

Вы можете использовать powershell или cmd чтобы протестировать свой сервис и найти более подробную информацию об ошибках.

Если вы получаете какую-то ошибку, как я, вы можете проверить мой ответ в другом вопросе, я исправил его и опубликовал свой код здесь.

Ответ 11

Создать и запустить сервис

Служба остановки и удаления

Я набрасываю архитектуру для набора программ, которые совместно используют различные взаимосвязанные объекты, хранящиеся в базе данных. Я хочу, чтобы одна из программ действовала как служба, которая обеспечивает интерфейс более высокого уровня для операций с этими объектами, а другие программы получали доступ к объектам через эту службу.

В настоящее время я стремлюсь к Python и фреймворку Django в качестве технологий для реализации этой службы. Я почти уверен, что знаю, как демонизировать программу Python в Linux. Однако это необязательный элемент спецификации, который система должна поддерживать Windows. У меня мало опыта работы с программированием Windows и совсем нет опыта работы с сервисами Windows.

Можно ли запустить программу Python как службу Windows (то есть запустить ее автоматически без входа пользователя)? Мне не обязательно будет реализовывать эту часть, но мне нужно приблизительное представление о том, как это будет сделано, чтобы решить, следует ли проектировать в этом направлении.

Edit: Спасибо за все ответы до сих пор, они довольно исчерпывающие. Я хотел бы знать еще одну вещь: как Windows осведомлен о моей службе? Могу ли я управлять им с помощью собственных утилит Windows? Что эквивалентно помещению сценария start/stop в /etc/init.d?

У меня есть сценарий python, который работает на сервере windows Server 2008 в строке cmd. Мне не нужно никакого взаимодействия во время выполнения скрипта. Кстати, сценарий работает уже около недели. Поэтому, если сервер по какой-то причине отключает мое соединение, мой скрипт останавливается, и.

Как я могу запустить файл war в качестве службы на Windows? На самом деле, я хочу запустить свой военный файл, когда я запускаю свою машину. Как это сделать?

- Да, можешь. Я делаю это с помощью библиотек pythoncom, которые входят в комплект поставки ActivePython или могут быть установлены с pywin32 (Python для расширений Windows).

Это базовый скелет для простого сервиса:

Ваш код будет идти в методе main() -обычно с каким-то бесконечным циклом, который может быть прерван проверкой флага, установленного в методе SvcStop

Хотя я поддержал выбранный ответ пару недель назад, тем временем я гораздо больше боролся с этой темой. Такое ощущение, что иметь специальную установку Python и использовать специальные модули для запуска скрипта в качестве службы-это просто неправильный путь. А как насчет переносимости и тому подобного?

Я наткнулся на замечательного менеджера по обслуживанию без сосания, который сделал его действительно простым и разумным, чтобы иметь дело с Windows услугами. Я решил, что, поскольку я могу передать параметры установленной службе, я могу также выбрать свой исполняемый файл Python и передать свой сценарий в качестве опции.

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

Самый простой способ-использовать: NSSM - менеджер Несосущих услуг. Просто скачайте и распакуйте файл в выбранное вами место. Это автономная утилита, около 300 КБ (намного меньше, чем установка всего пакета pywin32 только для этой цели), и никакой "installation" не требуется. zip содержит 64-bit и 32-разрядную версию утилиты. Любой из них должен хорошо работать в текущих системах (вы можете использовать 32-разрядную версию для управления службами в системах 64-bit).

GUI подход

1-Установите программу python в качестве службы. Откройте приглашение Win от имени администратора

2-на консоли NSSMs GUI:

Каталог запуска: C:\Python27

3-Проверьте созданные сервисы на services.msc

Скриптовый подход (no GUI)

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

Для удобства команды описываются здесь простым обращением к утилите как nssm.exe . Однако желательно более явно ссылаться на него в скриптах с его полным путем c:\path\to\nssm.exe , поскольку это автономный исполняемый файл, который может быть расположен в частном пути, о котором система не знает.

1. Установите сервис

Вы должны указать имя службы, путь к соответствующему исполняемому файлу Python и путь к сценарию:

В качестве альтернативы вы можете захотеть, чтобы ваше приложение Python было запущено как модуль Python. Один простой подход состоит в том, чтобы сказать nssm, что он должен перейти в надлежащий начальный каталог, как вы сделали бы сами при запуске из команды shell:

Этот подход хорошо работает с виртуальными средами и автономными (встроенными) установками Python. Просто убедитесь, что все проблемы с путями в этих средах были правильно решены обычными методами. nssm имеет способ установки переменных окружения (например, PYTHONPATH) при необходимости, а также может запускать пакетные скрипты.

2. Чтобы запустить службу

3. Чтобы остановить службу

4.чтобы удалить службу , укажите параметр confirm , чтобы пропустить интерактивное подтверждение.

Я создал сценарий ниже, чтобы проверить порт моего приложения 2025 и зарегистрировать количество подключений. Мне нужен этот скрипт для запуска в качестве службы на Windows с именем netstat_2025 . Кто-нибудь знает, есть ли такая возможность? Я не хочу использовать планировщик задач, а вместо этого.

У меня есть служба windows, которую я хочу запустить в контейнере docker на Azure. Я хотел бы иметь такую же настройку при локальном запуске службы, поэтому я хотел бы запустить тот же контейнер docker локально, что и служба windows (я думаю?). Как бы я это сделал? Или есть лучший подход? Спасибо.

Существует несколько альтернатив для установки в качестве службы практически любого исполняемого файла Windows.

Метод 1: Используйте instsrv и srvany из rktools.exe

Для Windows Home Server или Windows Server 2003 (работает также с WinXP) инструменты Windows Server 2003 Resource Kit поставляются с утилитами , которые можно использовать в тандеме для этого, называемыми instsrv.exe и srvany.exe . См. эту статью Microsoft KB KB137890 для получения подробной информации о том, как использовать эти utils.

Для домашнего сервера Windows существует отличная удобная оболочка для этих утилит, метко названная "any Service Installer".

Способ 2: использовать для ServiceInstaller Windows NT

Существует еще одна альтернатива, использующая ServiceInstaller для Windows NT ( скачать можно здесь) с доступными инструкциями python . Вопреки названию, он работает как с Windows 2000, так и с Windows XP. Вот несколько инструкций по установке скрипта python в качестве службы.

Установка скрипта Python

Запустите ServiceInstaller, чтобы создать новую службу. (В данном примере это предполагается, что python установлен в c:\python25)

После установки откройте Панель управления Службы панели applet, выберите и запустите службу PythonTest.

После моего первоначального ответа я заметил, что на SO уже есть тесно связанные Q&A. См. также:

Самый простой способ добиться этого-использовать собственную команду sc.exe:

Рекомендации:

Пошаговое объяснение, как заставить его работать :

1-сначала создайте файл python в соответствии с базовым скелетом, упомянутым выше. И сохраните его в путь, например : "c:\PythonFiles\AppServerSvc.py"

2 - На этом этапе мы должны зарегистрировать наш сервис.

Запустите командную строку от имени администратора и введите as:

ка создать TestService binpath= "C:\Python36\Python.exe c:\PythonFiles\AppServerSvc.py" DisplayName= "TestService" запуска= авто

первый аргумент binpath - это путь python.exe

второй аргумент binpath - это путь к вашему файлу python, который мы уже создали

Не пропустите, что вы должны поставить один пробел после каждого знака"=".

Тогда, если все в порядке, вы должны увидеть

Теперь ваша служба python установлена как служба windows. Вы можете увидеть его в Диспетчере служб и реестре в разделе :

3-Теперь хорошо. Вы можете запустить свою службу в service manager.

Вы можете выполнить каждый файл python, предоставляющий этот скелет службы.

Создание и запуск сервиса

Остановка и удаление службы

Я начал хостинг как сервис с pywin32 .

Error 1053: The service did not respond to the start or control request in a timely fashion.

Error 7009: Timeout (30000 milliseconds) waiting for the <ServiceName> service to connect.

Я много боролся с pywin, но в итоге использовал NSSM, как это было предложено в этом ответе . Мигрировать туда было очень легко.

(Я преобразовал свой файл .py в .exe с помощью pyinstaller )

НССМ: как уже было сказано

На консоли NSSMs:

путь: path\to\your\program.exe

Аргументы: пусто

Если вы не хотите конвертировать свой проект в .exe

  • создайте файл .bat с python >
  • и установите путь к файлу .bat

После работы над этим в течение нескольких дней, вот ответ, который я хотел бы найти, используя pywin32, чтобы сохранить его красивым и самодостаточным.

Это полный рабочий код для одного решения на основе цикла и одного решения на основе потока. Он может работать как на python 2, так и на 3, хотя я тестировал только последнюю версию на 2.7 и Win7. Цикл должен быть хорош для опроса кода, а протектор должен работать с более серверным кодом. Кажется, он хорошо работает с сервером официантки wsgi, который не имеет стандартного способа изящно закрыться.

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

Тем не менее, я все еще чувствую, что нахожусь здесь на несколько шаткой почве, особенно в том, что касается того, насколько чист выход из версии потока, но, по крайней мере, я считаю, что здесь нет ничего вводящего в заблуждение .

Для запуска просто скопируйте код в файл и следуйте инструкциям.

обновление:

Используйте простой флаг для завершения потока. Важно то, что "thread done" печатает.
Более подробный пример выхода из несговорчивого серверного потока см. В моем посте о сервере waitress wsgi .

Принятый ответ с использованием win32serviceutil работает, но является сложным и затрудняет отладку и изменения. Гораздо проще использовать NSSM (менеджер услуг без сосания). Вы пишете и удобно отлаживаете обычную программу python, а когда она наконец работает, вы используете NSSM, чтобы установить ее как сервис менее чем за минуту:

Из командной строки с повышенными правами (admin) вы запускаете nssm.exe install NameOfYourService и заполняете эти параметры:

  • путь : (путь к python.exe например C:\Python27\Python.exe )
  • Аргументы: (путь к вашему скрипту python, например c:\path\to\program.py )

Следите за PySvc.py

изменение папки dll

Я знаю, что это старо, но я застрял на этом навсегда. Для меня эта конкретная проблема была решена путем копирования этого файла-pywintypes36.dll

Похожие вопросы:

Можно ли запустить скрипт Python в качестве фоновой службы на webserver? Я хочу сделать это для связи сокетов.

Я ищу лучший способ запустить приложение java в качестве службы Windows Server 2003. Каковы мои варианты и каков основной общий процесс для этого? Большое спасибо.

Я использую IntelliJ IDEA 14 Ultimate и хотел бы запустить скрипт Python (на сервере Tomcat) из IDE. Я сделал это на Windows, но это не кросс-платформа, и я думаю, что это трюк. Вот что я сделал.

У меня есть сценарий python, который работает на сервере windows Server 2008 в строке cmd. Мне не нужно никакого взаимодействия во время выполнения скрипта. Кстати, сценарий работает уже около.

Как я могу запустить файл war в качестве службы на Windows? На самом деле, я хочу запустить свой военный файл, когда я запускаю свою машину. Как это сделать?

Я создал сценарий ниже, чтобы проверить порт моего приложения 2025 и зарегистрировать количество подключений. Мне нужен этот скрипт для запуска в качестве службы на Windows с именем netstat_2025 .

У меня есть служба windows, которую я хочу запустить в контейнере docker на Azure. Я хотел бы иметь такую же настройку при локальном запуске службы, поэтому я хотел бы запустить тот же контейнер.

У меня есть проблема с тем, как запустить скрипт python из Rstudio? Моя первоначальная идея состоит в том, чтобы захватить скрипт python из репозитория GitHub , а затем запустить его в R, я захватил.

Я создал скрипт shell, который используется для установки переменных окружения. Я пытаюсь запустить этот скрипт через скрипт python, но каждый раз показывает мне ошибку как "Command, а не.

Я хочу запустить скрипт python перед выключением system.I использую Windows 7.I запустил скрипт python при запуске системы, но я не могу запустить скрипт перед выключением. Я имею в виду, как.

Читайте также: