Bonjour, je n’arrive pas à faire fonctionner mon script python pour redemarrer mes scripts en cas de coupure sur le serveur , j’ai configuré une tache cron qui execute le script toute les 15mins , dans le script j’utilise tmux pour garder la session ouverte pour garder mes scripts actif cest pour 2 bots telegrams, le probleme c’est quand je fais python3 redemarrage_scripts.py manuellement le script demarre bien , je pense bien utiliser tmux dans l’environnement virtuel python pour avoir les dependances nécessaires mais les bots ne fonctionne pas , je ne comprends ce qui passe dans les logs j’ai aucune erreur . Je tiens à preciser que quand je demarre les fichiers separements , ils fonctionnent bien dans le telegram , le script doit avoir un soucis mais je n’arrive pas à comprendre , pouvez vous m’éclairer ? , merci à vous
# Python 3.11.5 /
import datetime
import subprocess
import logging
# Configurez le logging pour écrire dans un fichier
logging.basicConfig(filename='scripts.log', level=logging.INFO, format='%(asctime)s - %(message)s')
# Chemin de l'environnement Python
env_path = "/web/bot-telegram/monenv/bin/activate"
logging.info("Début de l'exécution du script")
# Vérifier si tmux est en cours d'exécution
if subprocess.run(['pgrep', '-f', 'tmux'], stdout=subprocess.DEVNULL).returncode != 0:
# tmux n'est pas en cours d'exécution, le démarrer
logging.info("Démarrage de tmux")
subprocess.Popen(['tmux', 'new-session', '-d', '-s', 'my_session'])
# Vérifier si l'environnement virtuel est actif avant de l'activer
if subprocess.run(['pgrep', '-f', 'activate'], stdout=subprocess.DEVNULL).returncode != 0:
logging.info("Activation de l'environnement virtuel...")
subprocess.Popen(['tmux', 'send-keys', '-t', 'my_session', f'source {env_path}', 'C-m'])
else:
logging.info("Environnement virtuel déjà actif")
# Redémarrer les scripts
scripts = ['cellulegroup_group_order_bot.py', 'cellulegroup_countdown_bot.py']
# Vérifier si les scripts sont en cours d'exécution
for script in scripts:
if subprocess.run(['pgrep', '-f', script], stdout=subprocess.DEVNULL).returncode != 0:
# Le script n'est pas en cours d'exécution, le redémarrer
logging.info(f"Redémarrage du script {script}")
# Exécutez le script à l'intérieur de la session tmux
subprocess.Popen(['tmux', 'send-keys', '-t', 'my_session', f'python3.11 {script}', 'C-m'])
else:
logging.info(f"Le script {script} est déjà en cours d'exécution")