2011-10-02 19 views
21

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

32

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:

  1. Jeśli nie zrobiłeś tego jeszcze, zainstalować Cygwin. Podczas procesu instalacji wybierz Python.
  2. Z terminalu Cygwin zainstaluj jak zwykle virtualenv.
  3. Tworzenie virtualenv dla supervisord, a następnie zainstaluj jak zwykle:

    pip install supervisord 
    
  4. 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).

  5. 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" 
    
  6. 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.

+3

Krótka informacja: jest to 'inspektor instalacji pip 'i wymaga on pythona 2.4+, ale nie pracować z dowolnymi wersjami 3+. – Peon

9

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).

+0

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

+0

W takim przypadku użyj pliku bat, polecenia sc i programu planującego system, aby obsłużyć proces "zabity". Zobacz moją edycję. –

5

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.

+3

Najnowszy TRUNK honcho ma teraz wsparcie dla Windowsów :) używaj i ciesz się –

+0

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

+0

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/ –

Powiązane problemy