Sinatra: 生产环境中的热代码推送?

4
当我从我的Sinatra应用程序向生产服务器推送新代码时,我目前通过触碰tmp/restart.txt来触发乘客的重启,以加载新更改。问题在于,在此过程中,该站点基本上会关闭大约10秒钟的时间。
我该如何设置我的服务器,以完全避免任何停机时间?
也就是说,我希望应用程序保持服务于旧的代码版本,直到新代码完全加载,然后立即切换到新代码。
使用shotgun或sinatra/reloader将无法在生产环境中运行。最后,如果答案取决于应用程序服务器,则我想知道如何在独角兽和乘客两种情况下实现这一点。

你看过http://www.modrails.com/documentation/Users%20guide%20Nginx.html#deploying_a_rack_app吗?使用Passenger,只需触摸tmp/restart.txt,Passenger将在下一个请求时重新启动应用程序。 - hdgarrood
@hdgarrood,我觉得我的原帖不够清晰,或者我对Passenger/nginx的情况理解不够透彻,但你所描述的实际上是我目前正在做的。但是你提到的下一个请求需要10秒钟才能完成。 - Jonah
@Jonah 在这种情况下,我可能无法帮忙。Sinatra应用程序独立启动需要多长时间?也是10秒钟吗? - hdgarrood
@hdgarrood 是的,我认为时间大约是一样的。 - Jonah
希望有人能回答这个问题,因为我也想知道 :) - hdgarrood
1个回答

2

1
这正是我想要的,谢谢。 - Jonah

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