Potrzebuję uruchomić skrypt Pythona i upewnić się, że uruchomi się ponownie po jego zakończeniu. Wiem, że istnieje rozwiązanie UNIX o nazwie supervisord. Ale niestety serwer, na którym mój skrypt ma zostać uruchomiony, jest w systemie Windows. Czy wiesz, jakie narzędzie może być przydatne? DziękiCzy system Windows jest zgodny z nadzorem?
Odpowiedz
Pomimo dużego ograniczenia odpowiedzialności here, można uruchomić narzędzie Supervisor pod numerem Cygwin w systemie Windows; Okazuje się, że Cygwin ma długą drogę do symulacji środowiska Posix, tak dobrze, że w rzeczywistości supervisord działa niezmieniony. Nie trzeba uczyć się nowego narzędzia, a zaoszczędzisz nawet sporo pracy, jeśli chcesz wdrożyć skomplikowany projekt na wielu platformach.
Oto mój przepis:
- Jeśli nie zrobiłeś tego jeszcze, zainstalować Cygwin. Podczas procesu instalacji wybierz Python.
- Z terminalu Cygwin zainstaluj jak zwykle virtualenv.
Tworzenie virtualenv dla supervisord, a następnie zainstaluj jak zwykle:
pip install supervisord
Konfiguracja supervisord w zwykły sposób. Pamiętaj, że supervisord będzie działał z Cygwin, więc lepiej używaj ścieżek Cygwin way (C: \ myservers \ project1 tłumaczy na/cygdrive/c/myservers/project1 w Cygwin).
Teraz prawdopodobnie chcesz zainstalować superwordor jako usługa. Oto jak to zrobić:
cygrunsrv --install supervisord --path /home/Administrator/supervisor/venv/bin/python --args "/home/Administrator/supervisor/venv/bin/supervisord -n -c /home/Administrator/supervisor/supervisord.conf"
Idź do menedżera usług systemu Windows i uruchomić usługę supervisord że po prostu zainstalowany.
Punkt 5 instaluje supervisord jako usługa systemu Windows, dzięki czemu można ją kontrolować (start/stop/restart) z menedżera usług systemu Windows. Ale rzeczy, które możesz zrobić z supervisorctl
działają tak jak zwykle, co oznacza, że możesz po prostu wdrożyć stary plik konfiguracyjny.
Prawdopodobnie chcesz uruchomić swój skrypt jako Windows Service
. Aby to zrobić, potrzebujesz biblioteki python-win32. Ten question ma dobry opis tego, jak to zrobić, a także kilka linków do innych powiązanych zasobów. Ten question może być również użyteczny.
A Windows Service
to sposób, w jaki chcesz zawinąć dowolny skrypt, który musi działać nieprzerwanie w systemie Windows. Można je skonfigurować tak, aby automatycznie uruchamiały się podczas rozruchu i obsługiwały awarie. Nic nie powstrzyma nikogo przed zabiciem samego procesu, ale aby poradzić sobie z tą potencjalną sytuacją, możesz po prostu utworzyć plik bat
i użyć polecenia sc
, aby udostępnić usługę, aby sprawdzić, czy działa, a jeśli nie, zrestartować usługę. Wystarczy zaplanować, aby plik bat
był uruchamiany co 60 sekund (lub co jest rozsądne, aby skrypt mógł zostać wyłączony).
Uruchamianie skryptu Pythona jako usługi systemu Windows spowoduje uruchomienie go tylko w tle. To nie wystarczy. Moim celem jest uczynienie skryptu niezniszczalnym. Skrypt musi zostać uruchomiony ponownie, nawet jeśli ktoś go zabije. – pss
W takim przypadku użyj pliku bat, polecenia sc i programu planującego system, aby obsłużyć proces "zabity". Zobacz moją edycję. –
Jeśli chcesz Process Manager supervisord podobny, który działa na większości posix OS i Python oparte jak supervisord, to należy spojrzeć na honcho który jest portem Pythona z majstrem (Ruby-based):
http://pypi.python.org/pypi/honcho/
Działa świetnie na mac, Linux, ale (w rzeczywistości) jeszcze nie Windows ... (edytując moją pierwszą odpowiedź, w której powiedziałem optymistycznie, że już działa na Windowsie w oparciu o żądanie ściągnięcia, które zostało odrzucone od tego czasu)
Istnieje widelec, który zapewnia obsługę systemu Windows tutaj https://github.com/redpie/honcho i niektóre prace w toku, aby wesprzeć Windows tutaj https://github.com/nickstenning/honcho/issues/28 ... przynajmniej może stać się możliwym rozwiązaniem w najbliższej przyszłości.
Istnieje również widelec brygadzisty obsługujący system Windows pod adresem: https://github.com/ddollar/foreman-windows, który może działać dla Ciebie, ale nigdy go nie wypróbowałem.
Na razie usługa Windows może być najlepszym rozwiązaniem krótkoterminowym.
Najnowszy TRUNK honcho ma teraz wsparcie dla Windowsów :) używaj i ciesz się –
Cześć, lil 'pytanie o Honcho: czy naprawdę powinien ponownie uruchomić nieudane zadania, takie jak nadzorca? Nie, kiedy "zabiję" jednego. Czy więc musimy użyć kombinacji nadzorcy i honcho? Dzięki. – Ehvince
W rzeczywistości honcho jest bardziej jak brygadzista niż przełożony. Zobacz także https://blog.codeship.com/using-honcho-create-multi-process-docker-container/ –
- 1. Czy Drupal jest zgodny z paradygmatem MVC?
- 2. Czy system Kinect SDK 2 jest zgodny z systemem Kinect Xbox 360?
- 3. Programowo sprawdź, czy system Windows 7 jest aktywny.
- 4. C# - Jak sprawdzić, czy system Windows jest "rozliczony" po uruchomieniu?
- 5. Czy Mono obsługuje 64-bitowy system Windows?
- 6. Czy system Windows 8 Kompiluje JavaScript?
- 7. Czy Firebase Cloud Messaging HIPAA jest zgodny?
- 8. Czy kod źródłowy kompresji LZ4 jest zgodny z 64-bitowym?
- 9. Czy git svn jest zgodny z subtree git?
- 10. Czy Visual-C++ - 2017 jest binarny zgodny z VC++ - 2015?
- 11. Sprawdź, czy pakiet jest zgodny z rdzeniem .net
- 12. Czy Bootstrap jest zgodny z formantami Telerik ASP.NET?
- 13. Czy komponent Powershell jest zgodny wstecz ze standardowym wierszem polecenia?
- 14. Typ nie jest zgodny z protokołem
- 15. Jak AnyObject jest zgodny z NSObjectProtocol?
- 16. Nie jest zgodny z protokołem UIPickerViewDataSource
- 17. Zestaw ikon zgodny z Windows 7 w aplikacji Delphi 2007
- 18. Czy łańcuch znaków jest zgodny() w Selenium Webdriver 2?
- 19. RegistrationFormType :: buildForm() nie jest zgodny
- 20. Co jest #zdefiniowane, jeśli kompilator jest zgodny z Cpp0x?
- 21. Czy system Windows Phone 7.1 obsługuje gniazda SSL?
- 22. Jak sprawdzić, czy zdalny system jest osiągalny?
- 23. Czy program DbgHelp.dll jest wbudowany w system Windows? Czy mogę na nim polegać?
- 24. Skąd mam wiedzieć, czy system jest włączony?
- 25. Czy system Mac OS X POSIX jest niezgodny? (timer_settime)
- 26. Czy system Windows 7 przetwarza numery identyfikacyjne procesów (PID)?
- 27. Czy system Windows 7 Naprawiono ograniczenie ścieżki pliku 255 znaków?
- 28. Plik wsadowy: Sprawdź, czy system operacyjny to Windows 10
- 29. Czy Fragment.setUserVisibleHint() jest wywoływana przez system Android?
- 30. Czy operator <(mniej niż) na wskaźnikach jest zgodny?
Krótka informacja: jest to 'inspektor instalacji pip 'i wymaga on pythona 2.4+, ale nie pracować z dowolnymi wersjami 3+. – Peon