web-dev-qa-db-fra.com

Comment exécuter Flask Server en arrière-plan

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?

11
Gary

Vous avez plusieurs options:

  1. Facile: détachez le processus avec &, par exemple:

$ Sudo python app1c.py &

  1. Moyen: installez tmux avec apt-get install tmux lancez tmux et démarrez votre application comme avant et détachez avec CTRL + B.

  2. Complexer: Lire exécutez votre script flask avec un serveur wsgi - uwsgi, gunicorn, nginx.

8
Oz123

Utilisation:

$Sudo python app1c.py >> log.txt 2>&1 &

  1. ">> log.txt" pousse toute votre sortie standard dans le fichier log.txt (vous pouvez vérifier les journaux d'application dedans)

  2. "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)

  3. "&" à 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..!!

5
Hemanth GS

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

4
Peixiang Zhong

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

3
Michael Mezher

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.

3
Gal Mal

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.

0
Dhrumil Panchal