龙卷风代码部署

时间:2011-08-18 07:40:39

标签: python deployment tornado fabric

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

我们目前有一个运行良好的解决方案,我们启动四个龙卷风进程并将PID保存到/ tmp /中的文件。在部署新代码时,我们通过结构运行以下序列:

  1. 从prod分支做一个git pull。
  2. 从负载均衡器中取出机器。
  3. 等待所有飞行中的连接以睡眠结束。
  4. 杀死pid文件中的所有龙卷风并删除所有* .pyc文件。
  5. 重新启动龙卷风。
  6. 将机器重新安装到负载平衡器上。
  7. 我们从中获得了一些灵感:http://agiletesting.blogspot.com/2009/12/deploying-tornado-in-production.html

    那里还有其他完整的解决方案吗?

2 个答案:

答案 0 :(得分:1)

我们以监督员的身份运行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添加到发布标识符。

答案 1 :(得分:0)

我还没有在制作中部署Tornado,但我一直在玩Gevent + Nginx并且一直在使用Supervisord进行进程管理 - 启动/停止/重启,日志记录,监控 - supervisorctl非常方便这个。就像我说的那样,不是部署解决方案,而是一种值得使用的工具。