web-dev-qa-db-fra.com

Quelle est la bonne façon de laisser gunicorn en cours d'exécution?

Je souhaite effectuer un déploiement Flask + Nginx + Gunicorn. J'ai installé et suis en train de lancer Nginx et je lance gunicorn comme décrit dans la documentation:

gunicorn app:app

Mais quand je me déconnecte du serveur, le processus gunicorn s'achève? Quelle est la bonne façon de s’assurer que Nginx reste connecté et redémarre en cas de blocage?

23
nickponline

Je chercherais quelque chose comme Superviseur .

18
Rachel Sanders

Utilisez l'option --daemon lors de l'exécution de gunicorn. Exemple:

gunicorn grand56.wsgi:application --name grand56 --workers 3 --user=root --group=root --bind=127.0.0.1:1001 --daemon

28
zhiguo.wang

Il est important de noter que lorsque vous démarrez le processus à partir de la ligne de commande, il est un enfant de votre processus terminal (c'est-à-dire un enfant de bash). Lorsque vous vous déconnectez du serveur, votre processus bash est terminé, de même que tous ses enfants. 

Vous voudrez utiliser n'importe quel système en place pour gérer nginx et gérer gunicorn (des scripts init.d ou Upstart aux moniteurs de processus d'application spécialisés tels que Monit, Supervisor, Bluepill, Foreman, etc.).

7
Sean Vieira

Faites attention à Sean.

Cependant, vous pouvez le lancer à la volée comme ceci:

Nohup gunicorn -c config.py </dev/null >/dev/null 2>&1 et il ne dépendra plus de la connexion du terminal. Vous pouvez remplacer >/dev/null par quelque chose comme >somelogfile si vous souhaitez enregistrer une sortie.

Mais pour une utilisation en production, il est préférable de l'intégrer à l'outil que vous utilisez pour gérer les processus.

5
Michael Dillon

utilisez - daemon à la commande obligatoire de gunicorn. ex:

gunicorn --bind 0.0.0.0:8001 your_project.wsgi --daemon
5
Gihan Gamage

Essaye ça:

Nohup gunicorn app:app &
2
tonino.j

J'ai essayé l'option systemd et cela a bien fonctionné, le lien ci-dessous a ma réponse complète et toutes les étapes pour invoquer votre application en tant que service gunicorn.

https://askubuntu.com/questions/930589/running-upstart-script-on-17-04/1010398#1010398

0
siddharthrc

Courir câlin api comme ça.

--daemon doit garder le processus en arrière-plan.

--access-logfile pour conserver le journal des demandes

--bind = <ip>: <port> L'adresse IP permettra l'accès depuis d'autres systèmes (si un proxy n'est pas nécessaire).

gunicorn <pyscirpt_name>:__hug_wsgi__ --name  caassist -w 4 --access-logfile /var/logs/gunicorn/gunicorn_access.log --daemon --bind=<ip>:<port>
0
pavan