Stránka 1 z 1
jak zjistit jestli je zapnuty jiny skript
Napsal: úte 28. led 2020 8:14:49
od Yenc
Ahoj,
s pythonem teprve začínám a potřeboval bych asi pomoct.
Snažím se udělat skript, který bude hlídat druhý skript.
první skript pracuje s mariadb, ale když restartuju mariadb službu, tak skript spadne.
moje vize je taková, že by druhý skript hlídal jestli běží první skript a jestli jede databaze.
v terminále se dá zjistit jestli ten skript jede "aux ps | grep program.py | grep -v grep", to ale vyplivne cely řádek ale jak docílit toho, že když mi dotaz vrátí tento řádek, tak aby mi python vyfiltroval, nebo řekl že je to v ok nebo nok?
snad je to pochopitelné
Re: jak zjistit jestli je zapnuty jiny skript
Napsal: úte 28. led 2020 11:10:46
od jiri.tusla
Předně bych se nejdřív zamyslel, jestli by master skript nedokázal provést zotavení po odpojení/restartu DB.
A jako druhé bych si v master skriptu udělal heartbeat server a ten hlídal watchdog skriptem.
Python multithreading umí. Jsem se teď koukal a jsou toho plné interfernety.
Re: jak zjistit jestli je zapnuty jiny skript
Napsal: úte 28. led 2020 11:38:26
od Yenc
jiri.tusla píše: ↑úte 28. led 2020 11:10:46
Předně bych se nejdřív zamyslel, jestli by master skript nedokázal provést zotavení po odpojení/restartu DB.
A jako druhé bych si v master skriptu udělal heartbeat server a ten hlídal watchdog skriptem.
Python multithreading umí. Jsem se teď koukal a jsou toho plné interfernety.
o to zotaveni jsem se snazil ale skript zjistil, ze je databaze funkcni a kdyz hned po tom probehl restart sluzby, tak to skoncilo s chybou, proto jsem chtel ten druhy skript ktery by hlidal DB + ten prvni a pokud by padl ten prvni, tak by spustil/restartoval DB a nahodil by znovu ten skript
Re: jak zjistit jestli je zapnuty jiny skript
Napsal: úte 28. led 2020 12:26:29
od jiri.tusla
Re: jak zjistit jestli je zapnuty jiny skript
Napsal: úte 28. led 2020 12:40:00
od PetrSmetana
Potom co jsem nedávno napsal svůj první skript v pythonu k tomu mám určitě spousty co říct
V jednoduchosti je krása. Celý hlavní program bych obalil cyklem a v něm bych použil blok na odchycení výjimky -
https://www.w3schools.com/python/python_try_except.asp
Pokud se výjimka přihodí uspi proces na pár sekund -
https://www.w3schools.com/php/func_misc_sleep.asp
A následně se zkus spojit do DB znova - což se stane díky cyklu, který bude nově celý program obalovat.
V docházce kde jsem python použil (místní sekce projekty) používám stejně watchdog v cronu, který kontroluje různé výstupy a v případě potřeby restartuje celé RPi - primárně kvůli tomu, že se mi při výjimce nepodařilo nahodit nízkoúrovňové IO - MOSI/MISO.
Jinak multithreadig je taky řešení, ale to co popisuji výše mi přijde efektivnější, ale třeba tam máš celkově jinak postavenou architekturu té apky a potřebuješ to jinak
Re: jak zjistit jestli je zapnuty jiny skript
Napsal: úte 28. led 2020 12:42:47
od PetrSmetana
jo a napadlo mě ještě jednodušší řešení - pokud ti to spadne, tak si to prostě spusť jako službu pomocí systemd a můžeš si tam restart sám definovat
V docházce to mám nastavené takto:
/etc/systemd/system/dochazka.service -
https://experimentaal.org/dochazka/dochazka.service
Kód: Vybrat vše
sudo systemctl enable dochazka.service
Re: jak zjistit jestli je zapnuty jiny skript
Napsal: úte 28. led 2020 15:40:52
od Yenc
PetrSmetana píše: ↑úte 28. led 2020 12:42:47
jo a napadlo mě ještě jednodušší řešení - pokud ti to spadne, tak si to prostě spusť jako službu pomocí systemd a můžeš si tam restart sám definovat
V docházce to mám nastavené takto:
/etc/systemd/system/dochazka.service -
https://experimentaal.org/dochazka/dochazka.service
Kód: Vybrat vše
sudo systemctl enable dochazka.service
Ahoj,
Diky, toto me nenapadlo
dobry napad..
jen na okraj, ta malina bude ridit stary elektrokotel, ktery v sobe nema nic co by ho ridilo, akorad dva startery, ktere zpozduji stykace
..
ted uz to tam bezi v podstate od zacatku topne sezony a kupodivu to funguje (hlida teplotu v kotli a na ukor ji to zapina/vypina spirály pri ruznych stavech (v zavislosti jestli je drahy/levny proud, jestli je zapnuty/vypnuty termostat atd.
chci to ale cele predelat
Re: jak zjistit jestli je zapnuty jiny skript
Napsal: úte 28. led 2020 16:56:39
od PetrSmetana
Yenc píše: ↑úte 28. led 2020 15:40:52
Ahoj,
Diky, toto me nenapadlo
dobry napad..
jen na okraj, ta malina bude ridit stary elektrokotel, ktery v sobe nema nic co by ho ridilo, akorad dva startery, ktere zpozduji stykace
..
ted uz to tam bezi v podstate od zacatku topne sezony a kupodivu to funguje (hlida teplotu v kotli a na ukor ji to zapina/vypina spirály pri ruznych stavech (v zavislosti jestli je drahy/levny proud, jestli je zapnuty/vypnuty termostat atd.
chci to ale cele predelat
Super! Kdyby ses chtěl podělit o své řešení, tak určitě zabrus do projektů
viewtopic.php?f=41&t=28
Re: jak zjistit jestli je zapnuty jiny skript
Napsal: pát 21. úno 2020 18:37:47
od Yenc
Petře díky za tip..
Jelikož to dělám pro zábavu a nemám toho moc času tak na tom nepracuju zrovna rychlím tempem
ale:
Teď jsem vyzkoušel udělat z toho službu, v průběhu dotazu do db jsem udělal restart služby db a můj skript se znovu spustil a pokračovalo to tak jak má..
jsi bůh a jak to dodělám tak trošku popíšu jak a co to dělá..
Teď ještě pracuji na skriptu, který se bude sám učit, jestli je drahý nebo levný proud a na úkor toho bude ukončovat topení před změnou proudu (jelikož jsou v kotli 3 stykače a jsou ovládané ovládací nulou, tak to pěkně bouchne jak odpadnou všechny najednou a tomu chci zamezit
)