Zarządzanie procesami – supervisord

Cześć!

A więc kontynuujemy mój poprzedni wpis. Zatrzymaliśmy się na sytuacji gdzie mamy zainstalowaną naszą aplikację na virtualenvie.

Tak jak pisałem wcześniej – zarządzanie procesami jest bardzo istotnym elementem każdego kto chce pisać własne programy które mają działać non stop (a przynajmniej prawie non stop). Trzeba zorganizować sobie środowisko które będzie pozwalać na łatwe zatrzamynie i uruchamianie aplikacji jak i jej automatyczne restartowanie czy podnoszenie po „awarii”.

Takim środowiskiem jest supervisord.

Instalacja jest łatwa, wystarczy wykonać:

1
pip install supervisor

Warto mieć na uwadze:

1
Supervisor requires Python 2.4 or later but does not work on any version of Python 3.

i jeszcze to:

1
DEPRECATION: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of pip will drop support for Python 2.6

No i jak już go zainstalowaliśmy to stwórzmy przykładowy plik konfiguracyjny:

1
echo_supervisord_conf > /etc/supervisord.conf

W samym pliku /etc/supervisord.conf jest wszystko opisane więc nie będę powielał wiedzy a sam dodam do tego pliku taki kawałek:

1
2
3
4
5
[program:python_finacial]
command=/opt/run_python_financial
user=root
stdout_logfile=/var/log/stdout_financial.log
stderr_logfile=/var/log/stderr_financial.log

Który mówi żeby uruchamiać plik /opt/run_python_financial z roota. Standardowe wyjście aplikacji przekierowywać do /var/log/stdout_financial.log a wyjście błędów do /var/log/stderr_financial.log.
Nasza aplikacja ma zaimplementowane logowanie bezpośrednio do pliku a nie na standardowe wyjście, więc supervisor zbyt dużo nie przekieruje ale takie linijki zawsze warto mieć.

Plik /opt/run_python_financial ma zawartość:

1
2
3
#!/bin/sh
source /opt/virtual_envs/bin/activate
exec gold_digger

No i skoro to już mamy to możemy go uruchomić, wpisując:

1
supervisord

Aby zarządzać procesami możesz uruchomić program supervisorctl i będzie tam lista aktywnych procesów. Taka konsola jest przydatna i potrzebna ale poza nią możemy mieć jeszcze dostęp przez przeglądarkę. Aby taką możliwość uruchomić należy w pliku konfiguracyjnym- /etc/supervisord.conf – w sekcji inet_http_server odkomentować wszystkie 3 ustawienia oraz ustawić hasło i login.
Poza tą zmianą należy dokonać jeszcze jednej – tym razem w sekcji supervisorctl należy odkomentować wszystko. Login i hasło powinny być takie same jak wyżej ustawione zostały.

Restart supervisor’a wskazany – możesz przez program service. Ewentualnie ubij w htopie i uruchom ponownie.

Następnie przez przeglądarkę wejdź pod adres
http://adres_gdzie_lezy_supervisor:9001/

a Twoim oczom ukaże się coś podobnego do:
supervisor_gui

No i to mógłby by być koniec wpisu ale dodam jeszcze jedno – kursy zatrzymują się na weekend – tzn kurs srebra, złota, palladu i platyny w weekend się nie zmieniają :P

A więc nie ma sensu żeby program wtedy pracował.

Dodamy więc do CRON’a zadanie – niech on mi gasi aplikację powiedzmy o 00:01 w sobotę i podnosi o tej samej godzinie w poniedziałek:

1
2
1 0 * * 1 /usr/bin/supervisorctl start python_finacial
1 0 * * 6 /usr/bin/supervisorctl stop python_finacial

A więc teraz mogę z czystym sumieniem zakończyć część drugą z trzech.

W następnej części zrobimy coś z danymi które zbieramy – wyrysujemy w przeglądarce ładne wykresy ;)

Następna część już jest dostępna – KLIK.

Dzięki za wizytę,
Mateusz Mazurek
Podziel się na:
    Facebook email PDF Wykop Twitter

4
Dodaj komentarz

avatar
4 Wątki
0 Odpowiedzi
0 Śledzący
 
Komentarz z największą liczbą reakcji
Najczęściej komentowany wątek
0 Komentarze autora
ZeroMQ – sposób na komunikację międzyprocesową | Mateusz Mazurek - Inżynieria oprogramowaniaAsynchroniczna kolejka zadań na przykładzie aplikacji konwertującej pliki wideo | Mateusz Mazurek - Inżynieria oprogramowaniaFarma Flasków i HaProxy jako przykład load balancingu | Mateusz Mazurek - Inżynieria oprogramowaniaPython, pip i virtualenvy | Mateusz Mazurek - Inżynieria oprogramowania Ostatnie komentarze autora

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subskrybuj  
Powiadom o
trackback

[…] część już opublikowana – chcę poczytać. Dzięki za wizytę, Mateusz Mazurek Podziel się […]

trackback

[…] Pobawiliśmy się Flaskiem a czas wrócić do głównego tematu. A więc mamy serwer HTTP który może przyjąć ograniczoną ilość połączeń. U nas to jest jedno połączenie. Nie zadowala nas to więc chcemy przeskalować naszą infrastrukturę horyzontalnie. A więc tworzymy 6 instancji Flaska :D Wpis dodajemy do supervisora (nie wiesz co to – przeczytaj): […]

trackback

[…] Średnio jest tu co opisywać.. W on_created po prostu piszemy na stdout ścieżkę do pliku który idzie do Celery i delegujemy do niej taska z losową nazwą dla przekonwertowanego pliku. Przyda się wpis do supervisora (nie wiesz co to – przeczytaj): […]

trackback

[…] chce dodać że jeśli wykorzystamy supervisor’a o którym pisałem w tym poście – link i możliwości ZeroMQ, jesteśmy w stanie zbudować prawie nieograniczone środowisko produkcyjne. […]