2011-08-18 126 views
7

是否有基于龙卷风的Web应用程序部署的规范代码部署策略。我们目前的配置是在NginX后面运行4个龙卷风进程? (我们的具体用例在EC2之后)Tornado代码部署

我们现在已经有了一个可以运行得很好的解决方案,从而启动四个龙卷风进程并将PID保存到/ tmp /文件中。在部署新代码后,我们通过结构运行以下序列:

  1. 从prod分支执行git pull。
  2. 从负载平衡器中取出机器。
  3. 等待所有的航班连接完成睡眠。
  4. 杀死pid文件中的所有龙卷风,并删除所有* .pyc文件。
  5. 重新启动龙卷风。
  6. 将机器重新连接到负载平衡器。

我们已经采取了一些灵感来源于此:http://agiletesting.blogspot.com/2009/12/deploying-tornado-in-production.html

是否有出有任何其他的完整的解决方案?

回答

0

我没有在生产环境中部署Tornado,但我一直在玩Gevent + Nginx,并且一直在使用Supervisord进行进程管理 - 启动/停止/重新启动,日志记录,监控 - supervisorctl非常方便。就像我说的,不是一个部署解决方案,但可能是一个值得使用的工具。

1

我们与supervisord与超级跑旋风+ 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的(我们已经有了一个积压的任务转移到面料),但不是处理除去* pyc文件,我们建立/选择/电流释放标识符。