Я использую сборку Python 3.12 и pywin32 308 для регистрации скрипта в качестве службы. Я запускаю Windows 11.
У меня есть проект по следующему пути, и я запускаю его из venv в этой папке: C:\web\myapp-django-fullstack-main
Я запустил сценарий постустановки, и служба зарегистрировалась в Windows, но когда я пытаюсь запустить его, я получаю ошибку 1053. Служба не ответила вовремя. Что я делаю не так? Python не мой профессиональный язык, я просто работаю над ним.
Я пробовал скопировать из C:\Program Files\Python312\Lib\site-packages\pywin32_system32\pywintypes312.dll и скопируйте его в C:\Program Files\Python312\Lib\site-packages\win32
А также попробовал добавить переменные среды на свой компьютер, что привело к .venv\Lib\site-packages\pywin32_system32\
Вот сценарий:
#!/usr/bin/env python
import os
import os.path
import sys
import site
if sys.executable.lower().endswith("pythonservice.exe"):
# Change current working directory from PythonService.exe location to something better.
service_directory = os.path.dirname(__file__)
source_directory = os.path.abspath(service_directory)
os.chdir(source_directory)
# Manually activate a virtual environment inside an already initialized interpreter.
venv_base = os.path.abspath(os.path.join(source_directory, ".venv"))
site_packages = os.path.join(venv_base, 'Lib', 'site-packages')
site.addsitedir(site_packages)
# This is my base path
base_path = os.path.dirname(os.path.abspath(__file__))
if not base_path in sys.path:
sys.path.append(base_path)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "crosstab.settings")
import win32serviceutil
import win32service
import win32event
import time
import servicemanager
class MyService(win32serviceutil.ServiceFramework):
_svc_name_ = 'PythonServiceTest'
_svc_display_name_ = 'Python Test Service'
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.stop_event = win32event.CreateEvent(None, 0, 0, None)
self.running = True
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.stop_event)
self.running = False
def SvcRun(self):
while self.running:
print('Скрипт работает...')
time.sleep(60)
if __name__ == '__main__':
if len(sys.argv) == 1:
servicemanager.Initialize()
servicemanager.PrepareToHostSingle(MyService)
servicemanager.StartServiceCtrlDispatcher()
else:
win32serviceutil.HandleCommandLine(MyService)
Подробнее здесь: https://stackoverflow.com/questions/793 ... ws-service
Добавьте скрипт Python в качестве службы Windows ⇐ Python
Программы на Python
-
Anonymous
1735120427
Anonymous
Я использую сборку Python 3.12 и pywin32 308 для регистрации скрипта в качестве службы. Я запускаю Windows 11.
У меня есть проект по следующему пути, и я запускаю его из venv в этой папке: C:\web\myapp-django-fullstack-main
Я запустил сценарий постустановки, и служба зарегистрировалась в Windows, но когда я пытаюсь запустить его, я получаю ошибку 1053. Служба не ответила вовремя. Что я делаю не так? Python не мой профессиональный язык, я просто работаю над ним.
Я пробовал скопировать из C:\Program Files\Python312\Lib\site-packages\pywin32_system32\pywintypes312.dll и скопируйте его в C:\Program Files\Python312\Lib\site-packages\win32
А также попробовал добавить переменные среды на свой компьютер, что привело к .venv\Lib\site-packages\pywin32_system32\
Вот сценарий:
#!/usr/bin/env python
import os
import os.path
import sys
import site
if sys.executable.lower().endswith("pythonservice.exe"):
# Change current working directory from PythonService.exe location to something better.
service_directory = os.path.dirname(__file__)
source_directory = os.path.abspath(service_directory)
os.chdir(source_directory)
# Manually activate a virtual environment inside an already initialized interpreter.
venv_base = os.path.abspath(os.path.join(source_directory, ".venv"))
site_packages = os.path.join(venv_base, 'Lib', 'site-packages')
site.addsitedir(site_packages)
# This is my base path
base_path = os.path.dirname(os.path.abspath(__file__))
if not base_path in sys.path:
sys.path.append(base_path)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "crosstab.settings")
import win32serviceutil
import win32service
import win32event
import time
import servicemanager
class MyService(win32serviceutil.ServiceFramework):
_svc_name_ = 'PythonServiceTest'
_svc_display_name_ = 'Python Test Service'
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.stop_event = win32event.CreateEvent(None, 0, 0, None)
self.running = True
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.stop_event)
self.running = False
def SvcRun(self):
while self.running:
print('Скрипт работает...')
time.sleep(60)
if __name__ == '__main__':
if len(sys.argv) == 1:
servicemanager.Initialize()
servicemanager.PrepareToHostSingle(MyService)
servicemanager.StartServiceCtrlDispatcher()
else:
win32serviceutil.HandleCommandLine(MyService)
Подробнее здесь: [url]https://stackoverflow.com/questions/79307304/add-a-python-script-as-windows-service[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия