J'ai installé Flask sur mon Rapsberry Pi et je l'utilise dans le seul but d'agir comme serveur pour un fichier xml que j'ai créé avec un Python = script pour transmettre des données à une application iPad (iRule).
Mon RPI est configuré comme sans tête et mon accès se fait avec Windows 10 à l'aide de PuTTY, WinSCP et TightVNC Viewer.
J'exécute le serveur en ouvrant une fenêtre de terminal et la commande suivante:
Sudo python app1c.py
Cela configure le serveur et je peux très bien accéder à mon fichier xml. Cependant, lorsque j'éteins la machine Windows et la session PuTTY, le serveur Flask s'arrête!
Comment puis-je le configurer pour que le serveur Flask continue, même lorsque la machine Windows est éteinte?
J'ai lu dans la documentation Flask:
Bien que léger et facile à utiliser, le serveur intégré de Flask n'est pas adapté à la production car il ne s'adapte pas bien et par défaut ne sert qu'une seule demande à la fois.
Ensuite, ils donnent des exemples de déploiement de votre application Flask sur un serveur WSGI! Est-ce nécessaire compte tenu de l'application simple avec laquelle j'ai affaire?
Vous avez plusieurs options:
&
, par exemple:$ Sudo python app1c.py &
Moyen: installez tmux avec apt-get install tmux
lancez tmux et démarrez votre application comme avant et détachez avec CTRL + B.
Complexer: Lire exécutez votre script flask avec un serveur wsgi - uwsgi, gunicorn, nginx.
Utilisation:
$Sudo python app1c.py >> log.txt 2>&1 &
">> log.txt" pousse toute votre sortie standard dans le fichier log.txt (vous pouvez vérifier les journaux d'application dedans)
"2> & 1" pousse tous les stderr à l'intérieur du fichier log.txt (Cela pousserait tous les journaux d'erreurs à l'intérieur de log.txt)
"&" à la fin le fait fonctionner en arrière-plan.
Vous obtiendrez l'ID de processus immédiatement après avoir exécuté cette commande avec laquelle vous pouvez le surveiller ou le vérifier.
$Sudo ps -ef | grep <process-id>
J'espère que ça aide..!!
Installez Node package forever ici https: // www.npmjs.com/package/forever
Ensuite, utilisez
forever start -c python your_script.py
pour démarrer votre script en arrière-plan. Plus tard, vous pouvez utiliser
forever stop your_script.py
arrêter le script
J'ai toujours trouvé qu'un processus d'écran détaché était le meilleur pour des cas d'utilisation tels que ceux-ci. Courir: screen -m -d Sudo python app1c.py
Utilisation:
$ Sudo Nohup python app1c.py > log.txt 2>&1 &
Nohup
permet d'exécuter une commande/un processus ou un script Shell qui peut continuer à s'exécuter en arrière-plan après vous être déconnecté d'un Shell.
> log.txt
: il préfigure la sortie de ce fichier.
2>&1
: déplace tous les stderr vers stdout.
Le final &
vous permet d'exécuter une commande/un processus en arrière-plan sur le shell actuel.
Vous pouvez toujours utiliser Nohup pour exécuter des scripts en tant que processus d'arrière-plan.
Nohup python script.py
Cela exécutera votre script en arrière-plan et aura également ses journaux ajoutés dans le fichier Nohup.out qui sera situé dans le répertoire script.py is store.
Assurez-vous que vous fermez le terminal et n'appuyez pas sur Ctrl + C. Cela lui permettra de s'exécuter en arrière-plan même lorsque vous vous déconnectez.
Pour l'empêcher de s'exécuter, relancez ssh dans le pi et exécutez ps -ef |grep Nohup
et kill -9 XXXXX
où XXXX est le pid, vous obtiendrez la commande ps.