2011-08-18 11 views
7

Czy istnieje strategia wdrażania kodu kanonicznego do wdrażania aplikacji internetowych na bazie tornada. Nasza obecna konfiguracja to 4 procesy tornado działające za NginX? (Nasz konkretny przypadek użycia znajduje się za EC2.)Wdrażanie kodu Tornado

Mamy obecnie rozwiązanie, które działa dobrze, dzięki czemu uruchamiamy cztery procesy tornado i zapisujemy PID do pliku w/tmp /. Po wdrożeniu nowego kodu uruchamiamy następującą sekwencję za pośrednictwem tkaniny:

  1. Wyciągnij git z gałęzi prod.
  2. Usuń urządzenie z modułu równoważenia obciążenia.
  3. Poczekaj na wszystkich w połączeniach lotniczych, aby zakończyć ze snem.
  4. Zabij wszystkie tornada w pliku pid i usuń wszystkie pliki * .pyc.
  5. Uruchom ponownie tornada.
  6. Podłącz urządzenie z powrotem do systemu równoważenia obciążenia.

Wzięliśmy inspirację z tego: http://agiletesting.blogspot.com/2009/12/deploying-tornado-in-production.html

Czy są jakieś inne kompletne rozwiązania tam?

Odpowiedz

0

Nie wdrożyłem Tornada w produkcji, ale grałem z Gevent + Nginx i używam Supervisord do zarządzania procesami - start/stop/restart, logowanie, monitorowanie - supervisorctl jest bardzo przydatny do tego. Tak jak powiedziałem, nie rozwiązanie do wdrażania, ale może narzędzie warte użycia.

1

Prowadzimy Tornado + Nginx z superwizorem jako opiekunem.

Przykładowa konfiguracja (imiona zmienione)

[program:server] 
process_name = server-%(process_num)s 
command=/opt/current/vrun.sh /opt/current/app.py --port=%(process_num)s 
stdout_logfile=/var/log/server/server.log 
stderr_logfile=/var/log/server/server.err 
numprocs = 6 
numprocs_start = 7000 

muszę jeszcze znaleźć „najlepszy” sposób, aby ponownie uruchomić rzeczy, co będę prawdopodobnie w końcu zrobić, to mieć Nginx mieć „aktywny” plik, który jest zaktualizowano, aby HAProxy wiedział, że mamy kłopot z konfiguracją, a następnie poczekaj chwilę, wymień się rzeczami, a następnie włącz wszystko ponownie.

Używamy Capistrano (mamy zadanie backlog do przeniesienia do Fabric), ale zamiast zajmować się usuwaniem plików * .pyc, używamy dowiązania symbolicznego/opt/current do identyfikatora wersji.