Python официантка как служба Windows

Я написал сервер API, используя официантку и сокола на окнах. Он отлично работает, но теперь мне нужно запустить его как службу, чтобы его можно было отслеживать. Как лучше всего это сделать? Я просмотрел pywin32 и собственную реализацию Cherrypy. Я останавливаюсь на остановке официантки через python. Я знаю, что ctrl-break используется при использовании cmd, но не уверен, что использовать при использовании python.

def SvcStop(self):
    self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
    cherrypy.server.stop()
    win32event.SetEvent(self.stop_event)

Я не вижу, чтобы у официантки была функция остановки, как у Cherpy.

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

Спасибо, Энтони


person Anthony Scudese    schedule 04.11.2016    source источник


Ответы (2)


Я не знаю, как остановить официантку, кроме как просто убить нить. Вы пробовали, если он реагирует на какие-то сигналы?

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

person jhexp    schedule 11.09.2017

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

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

person Alias_Knagg    schedule 26.01.2020