Wspominałam, że pracuję nas schedulerem w aplikacji opartej o framework web2py. Tak jak obiecałam, napiszę o tym wkrótce. Tymczasem musiałam rozwiązać inny problem związany z tym zagadnieniem. Wspomnę tylko, że aby zadania schedulera działały, trzeba uruchomić odpowiedni worker, który pracuje w tle i zażąda uruchamianiem zdefiniowanych w bazie zadań. Można oczywiście worker uruchamiać ręcznie, ale wtedy każde wyłączenie aplikacji czy systemu powoduje, że worker trzeba uruchamiać ponownie. Wiadomo co się stanie jak ktoś o tym zapomni przy restarcie aplikacji po niespodziewanym jej zatrzymaniu. O wiele lepiej jest zdefiniować worker jako usługę systemu Windows, uruchomić ją i po prostu o niej zapomnieć.
Okazuje się, że istnieje nieskomplikowana i skuteczna aplikacja, która to umożliwia NSSM. Pokażę krok po kroku jak prawidłowo użyć tej aplikacji.
Instalacja NSSM
Właściwie nie jest potrzebna żadna instalacja. Wystarczy pobrać aplikację, rozpakować do dowolnego katalogu i już jest gotowa do użycie. Warto zwrócić uwagę, że w katalogu aplikacji znajdują się dwa podkatalogi z różnymi wersjami programu w zależności od wersji procesora.
Tworzenie usługi
Aby zarejestrować usługę w systemie należy uruchomić wiersz poleceń wybierając opcję “Uruchom jako administrator”, da nam to dostęp do opcji zarówno tworzenia jak i uruchamiania usługi.
Następnie należy przejść do katalogu w którym znajduje się rozpakowana aplikacja NSSM w wersji odpowiedniej dla naszego procesora i uruchomić instrukcję:
C:\nssm\win64>nssm install nazwa_uslugi
Parametr ‘nazwa_uslugi’ jest opcjonalny, można go ustawić w kolejnym kroku. Po uruchomieniu powyższej instrukcji pojawi się okno aplikacji nssm, w którym należy ustawić odpowiednie parametry usługi.
W pozycji Path należy podać ścieżkę do pliku pythonw.exe odpowiedniej wersji pythona aby wskazać interpreter skryptu. Pozycja Startup directory zostanie ustawiona automatycznie i nie ma potrzeby jej modyfikować. W pozycji Arguments należy podać ścieżkę do skryptu, który ma być uruchamiany jako usługa. Po zatwierdzeniu przyciskiem [Install service] powinniśmy otrzymać następującą odpowiedź, świadczącą o pomyślnym dodaniu usługi do systemu:
Zarządzanie usługą
Utworzona w taki sposób usługa jest nieaktywna, co można sprawdzić wpisując w linii poleceń komendę:
C:\nssm\win64>nssm status nazwa_uslugi
Otrzymamy następującą odpowiedź:
Aby uruchomić usługę należy w wierszu poleceń wywołać następującą komendę:
C:\nssm\win64>nssm start nazwa_uslugi
Jeśli wszystko przebiegło pomyślnie zobaczymy następująca odpowiedź:
W razie wystąpienia błędu należy przejrzeć systemowy dziennik zdarzeń aby znaleźć przyczynę. Za pomocą linii poleceń można również zatrzymywać, edytować i usuwać usługi. Pełną listę dostępnych komend można uzyskać po wpisaniu w linii poleceń następującej komendy:
C:\nssm\win64>nssm start nazwa_uslugi
Wywołuje ona okno pomocy aplikacji NSSM:
Na zakończenie tylko dodam, że stworzona przeze mnie w ten sposób usługa działa i prawidłowo uruchamia worker obsługujący zadania schedulera.
Właśnie trafiłem na Twój blog, super sprawa, będę czytał i korzystał :)
Miłego dnia