Zarządzanie procesami – supervisord

Cześć! Cieszę się, że mnie odwiedziłeś/aś. Zanim przejdziesz do artykułu chciałbym zwrocić Ci uwagę na to, że ten artykuł był pisany kilka lat temu (2016-03-11) miej więc proszę na uwadzę że rozwiązania i przemyślenia które tu znajdziesz nie muszą być aktualne. Niemniej jednak zachęcam do przeczytania.

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:

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
Mateusz M.

Ostatnie wpisy

Podsumowanie: maj, czerwiec, lipiec i sierpień 2024

Oj daaawnoo mnie tu nie było. Ale wakacje to był czas dużej liczby intensywnych wyjazdów i tak naprawdę, dopiero jakoś… Read More

2 miesiące ago

Podsumowanie: kwiecień 2024

Cześć! Zapraszam na krótkie podsumowanie kwietnia. Wyjazd do Niemiec A dokładniej pod granicę z Francją. Chrześnica miała pierwszą komunię. Po… Read More

6 miesięcy ago

Podsumowanie: luty i marzec 2024

Ostatnio tygodnie były tak bardzo wypełnione, że nie udało mi się napisać nawet krótkiego podsumowanie. Więc dziś zbiorczo podsumuję luty… Read More

7 miesięcy ago

Podsumowanie: styczeń 2024

Zapraszam na krótkie podsumowanie miesiąca. Książki W styczniu przeczytałem "Homo Deus: Historia jutra". Książka łudząco podoba do wcześniejszej książki tego… Read More

9 miesięcy ago

Podsumowanie roku 2023

Cześć! Zapraszam na podsumowanie roku 2023. Książki Zacznijmy od książek. W tym roku cel 35 książek nie został osiągnięty. Niemniej… Read More

10 miesięcy ago

Podsumowanie: grudzień 2023

Zapraszam na krótkie podsumowanie miesiąca. Książki W grudniu skończyłem czytać Mein Kampf. Nudna książka. Ciekawsze fragmenty można by było streścić… Read More

11 miesięcy ago