[PYTHON] Faire fonctionner Gunicorn via Fabric

Activé pour démarrer et redémarrer l'application exécutée sur Gunicorn côté serveur. J'ai appris que vous pouvez tuer en spécifiant le pid pour arrêter le processus.

gunicorn.conf.py

usr/bin/python
gunicorn.conf.py

bind = "0.0.0.0:5000"
workers = 2
worker_class = 'sync'
max_requests = 1000
timeout = 30
keep_alive = 2
preload = True
daemon = True

start.sh

GUNICORN=/usr/bin/gunicorn
ROOT=/your/app/path
PID=/var/run/gunicorn/your.pid
APP=run:app

if [ -f $PID ]; then rm $PID; fi
    cd $ROOT
    source venv/bin/activate
    exec $GUNICORN -c $ROOT/gunicorn.conf.py –pid=$PID $APP

fabfile.py

#coding: utf-8
from fabric.api import run,env,local,settings
from fabric.operations import sudo
from fabric.context_managers import cd
import os
import subprocess

from fabric.api import env, run
env.use_ssh_config = True
env.hosts = ["your ip address"]
env.key_filename = "/root/.ssh/authorized_keys"
env.user = "username"
env.password = "password"


def start():
    with settings():
        with cd("/your/path"):
            sudo("""
            source start.sh
            """,pty=False)

def stop():
    with settings():
        pid = get_pid()
        sudo("kill {}".format(pid))

def restart():
    try:
        stop()
    except:
        print("There isn't pid")
    start()

Vous pouvez maintenant redémarrer librement avec fab start / stop / restart.

Note

Cet article est http://furodrive.com/en/2014/2/stop_and_start_gunicorn Il a été créé sur la base de.

Recommended Posts

Faire fonctionner Gunicorn via Fabric
Je ne pourrais pas faire de gunicorn un démon avec Fabric
en tissu