Reboot Raspberry


#1

Bonjour,

J’ai un système qui envoie des données sur un serveur tous les 5mn. De temps en temps l’envoi bloque, du coup j’ai fait une détection de blocage, au bout de 30mn je fais rebooter mon système avec la commande “sudo shutdown -r now”. Je constate que souvent au redémarrage ça reste bloqueé quasiment 30mn sur un écran noir avec “plymouth-reboot.service”. Au moment du reboot, j’ai 3 thread python en cours.

J’avais utilisé cette command plutôt que le reboot car j’avais vu qu’elle était plus “secure” en terme d’extinction. Qu’est ce qui bloquerai le reboot ou le ralentirai autant ?
Est-ce risqué de passer sur la commande “reboot” purement et simplement ?

Merci pour votre aide


#2

Bonjour,

Premier test à faire, lancer le “shutdown -r now” sans l’applicatif Python.
Si ça redémarre immédiatement, ça vient très probablement de l’applicatif Python.
Résoudre le blocage de ce programme reviendra alors à ne plus avoir besoin du redémarrage !

N.B. : Utiliser un redémarrage pour remettre sur pied une machine, me rappelle trop une approche bête et méchante Win$$. Sur Linux, on a vraiment la main aux ressources pour éviter
un redémarrage brutal.

A+


#3

A oui, j’'ai déjà fait le test, je suis certain que c’est mon programme python qui ralenti le reboot.

Alors oui c’est une approche bête et méchante, c’est clair, mais je n’ai pas d’autres solutions sous le coude.
Je sais que j’ai au moins une fonction qui prend du temps, c’est l’envoi sur ftp (ftp.storebinary) qui prend parfois un temps fou (j’envoie des fichiers de plusieurs Mo). C’est rare mais ça arrive. Concrètement j’ai un thread python (sur 3) qui appelle cette fonction et quand ça bloque trop longtemps je reboot. J’aurais aimé terminé le thread correctement avant le reboot (avec un flag dans une boucle while, etc… )mais je n’ai pas trouvé de moyen de le faire. Ce thread est une simple fonction, pas de boucle while dedans et puis il bloque parfois sur cette fonction d’envoi donc pas capable d’aller exécuter le reste de la fonction pour checker des flags d’arrêt, d’où le reboot bête et méchant.
Si tu as une idée pour stopper correctement ce thread, libérer la ressource…je suis preneur.

J’ai en tête d’essayer de lancer cette fonction en process et non plus en thread, j’ai lu que l’on pouvait stopper un process…


#4

Bonjour,

Si tu comprend un peu l’anglais, j’ai se post sous le coude, (mais je ne l’ai pas testé)

A+


#5

Bonjour,

Merci pour le topic.
A tout hasard que penses-tu de switcher les threads en process, car a priori on peut arrêter un process.