Развертывание кода Торнадо - PullRequest
7 голосов
/ 18 августа 2011

Существует ли стратегия развертывания канонического кода для развертывания веб-приложений на основе торнадо.Наша текущая конфигурация состоит из 4 процессов торнадо, работающих за NginX?(Наш конкретный пример использования находится за EC2.)

В настоящее время у нас есть решение, которое работает достаточно хорошо, в результате чего мы запускаем четыре процесса торнадо и сохраняем PID в файл в / tmp /.После развертывания нового кода мы запускаем следующую последовательность через фабрику:

  1. Делаем git pull из ветви prod.
  2. Снимаем машину с балансировщика нагрузки.
  3. Подождите, пока все соединения в полете завершатся с помощью сна.
  4. Убейте все торнадо в файле pid и удалите все файлы * .pyc.
  5. Перезапустите торнадо.
  6. Подключите машину обратно к балансировщику нагрузки.

Мы черпали вдохновение из этого: http://agiletesting.blogspot.com/2009/12/deploying-tornado-in-production.html

Существуют ли еще какие-либо полные решения?

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Мы запускаем Tornado + Nginx с супервизором в качестве супервизора.

Пример конфигурации (имена изменены)

[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

Мне еще предстоит найти «лучший» способ перезапуска вещей,то, что я, вероятно, наконец-то сделаю, - это чтобы у Nginx был «активный» файл, который обновляется, давая HAProxy понять, что мы вмешиваемся в конфигурацию, затем немного подождем, поменяемся местами, затем снова включим все.

Мы используем Capistrano (у нас есть задача задела для перемещения в Fabric), но вместо удаления файлов * .pyc мы используем символическую ссылку / opt / current на идентификатор выпуска.

0 голосов
/ 02 апреля 2012

Я не развернул Tornado в производстве, но я играл с Gevent + Nginx и использую Supervisord для управления процессами - запуск / останов / перезапуск, ведение журнала, мониторинг - supervisorctl очень удобно для этого. Как я уже сказал, не решение для развертывания, но, возможно, стоит использовать инструмент.

...