龙卷风代码部署

7
有没有针对基于Tornado的Web应用程序部署的规范代码部署策略。我们当前的配置是在NginX后面运行4个Tornado进程?(我们特定的用例是在EC2后面。)
我们目前已经有一个足够好的解决方案,即我们启动四个Tornado进程并将PIDs保存到/tmp/文件中。在部署新代码时,我们通过fabric运行以下序列:
1. 从生产分支进行git pull。 2. 从负载均衡器中删除机器。 3. 等待所有正在进行的连接完成,使用sleep命令。 4. 杀死pid文件中的所有Tornado进程并删除所有*.pyc文件。 5. 重新启动Tornado进程。 6. 将机器重新连接到负载均衡器。
我们从这里获得了一些灵感:http://agiletesting.blogspot.com/2009/12/deploying-tornado-in-production.html 还有其他完整的解决方案吗?
2个回答

1
我们使用supervisord作为监督者来运行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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接