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é :D

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. :P

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. :P
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 :D

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 :D
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 :D 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 :D )