Python Language Exécution d'une application Web Flask en tant que service


Exemple

Ceci est une variante de l'exemple générique. Il vous suffit d'importer votre script d'application et d'appeler sa méthode run() dans la fonction main() du service. Dans ce cas, nous utilisons également le module de multitraitement en raison d'un problème d'accès à WSGIRequestHandler .

import win32serviceutil
import win32service
import win32event
import servicemanager
from multiprocessing import Process

from app import app


class Service(win32serviceutil.ServiceFramework):
    _svc_name_ = "TestService"
    _svc_display_name_ = "Test Service"
    _svc_description_ = "Tests Python service framework by receiving and echoing messages over a named pipe"

    def __init__(self, *args):
        super().__init__(*args)

    def SvcStop(self):
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        self.process.terminate()
        self.ReportServiceStatus(win32service.SERVICE_STOPPED)

    def SvcDoRun(self):
        self.process = Process(target=self.main)
        self.process.start()
        self.process.run()

    def main(self):
        app.run()


if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(Service)

Adapté de http://stackoverflow.com/a/25130524/318488