Unicorn en Gunicorn zijn geweldige tools voor mensen die het schrijven van web services in Ruby en Python. Een van de meest handige functies van beide programma's is hun vermogen om de applicatie code herladen on-the-fly, door paaien een nieuwe meester proces (of "scheidsrechter", in Gunicorn's taal) in antwoord op een besturingssysteem signaal (SIGUSR2). Helaas is dit opnieuw geladen proces onverenigbaar is met proces-volgt toezichthouders zoals Parvenu, omdat de oude meester proces sterft als onderdeel van de reload.
unicornherder is een hulpprogramma ontworpen om te helpen bij het gebruik van Parvenu en soortgelijke toezichthouders met Eenhoorn & nbsp;. Het doet dit door polling de pidfile geschreven door de Eenhoorn hoofdproces, en het automatiseren van de volgorde van de signalen die naar de master moeten worden gericht aan een doen "hot-reload". Als Eenhoorn stopt, zo zal de Eenhoorn Herder, wat betekent dat als je de herder toezicht (die niet als daemon), wordt u effectief toezicht op de Eenhoorn proces.
installatie
Unicorn Herder is verkrijgbaar bij de Python Package Index, en kan worden geïnstalleerd met pip:
& Nbsp; pip installeren unicornherder
Gebruik
Met gunicorn:
& Nbsp; unicornherder - -w 4 myapp: app
Met eenhoorn (met behulp van Bundler):
& Nbsp; bundelen exec unicornherder -u eenhoorn
Signalen
Eenhoorn Herder stuurt de volgende signalen naar de eenhoorn hoofdproces:
INT QUIT TERM SLA TTOU USR1 USR2
Met name, heeft Eenhoorn Herder niet doorsturen SIGWINCH, want het is niet bedoeld om te worden daemoniseerd.
Eenhoorn Herder slim ook SIGHUP, want dit is het signaal dat door Parvenu als u belt initctl herladen, en gebruikt het om een hot-reload van haar Eenhoorn bijvoorbeeld triggeren. Dit proces wordt twee minuten, om de nieuwe werknemers lang voordat geven.
NB: Er zal een periode hot-reload wanneer aanvragen worden bediend door zowel de oude als de nieuwe werknemers. Dit kan ernstige gevolgen hebben als u werkt met data migraties tussen het inzetten van versies van uw aanvraag. Gelieve hiermee rekening te houden bij de beslissing als je hot-herladen functie Eenhoorn Herder's moet gebruiken.
Parvenu config
Een voorbeeld parvenu config (compatibel met Parvenu v1.4 en hoger) voor gebruik met Unicorn Herder wordt hieronder gegeven:
description "Eenhoorn Herder"
starten op runlevel [2345]
stop op runlevel [! 2345]
respawn
respawn limiet 5 20
env PORT = 4567
setuid www
setgid www
chdir / var / apps / mysite
exec bundel exec unicornherder -u eenhoorn - --port $ PORT
# Of, voor een gunicorn installatie met een virtualenv
# Aan / var / venv / mysite ...
#script
#. / Var / venv / myapp / bin / activeren
# Exec unicornherder - -w 4 -b "127.0.0.1:$PORT" myapp: app
#end script
Eisen
- Python
Reacties niet gevonden