![](/img/trans.png)
[英]How to change and reload python code in waitress without restarting the server?
[英]Is there a way to deploy new code with Tornado/Python without restarting the server?
我最近开始尝试使用Python和Tornado Web服务器/框架进行Web开发。 以前,我在LAMP堆栈上使用PHP和我自己的框架。 使用PHP,部署更新的代码/新代码就像上传到服务器一样简单,因为mod_php和Apache交互的方式。
当我在Python / Tornado中添加新代码或更新代码时,是否需要重新启动Tornado服务器? 如果您有许多活跃用户,我可以看到这是有问题的。
(a)我是否必须重新启动服务器,还是有其他/更好的方法?
(b)如果是这样,我怎样才能避免用户断线/收到错误/等等。 当它重新启动时(可能需要几秒钟)?
[一种可能的想法是使用页面翻转范例,Nginx指向服务器,使用更新的代码启动新服务器实例,在那里重定向Nginx并取下原始服务器......?]
似乎最好的方法是使用Nginx和多个Tornado实例,正如我在原始问题中提到的那样,并且正如Cole所提到的那样。 Nginx可以动态重新加载其配置文件。 所以这个过程看起来像这样:
kill -HUP
命令重新加载Nginx配置文件 关于热交换配置文件的Nginx上有几个有用的资源:
https://calomel.org/nginx.html (在“解释nginx.conf中的指令”部分) http://wiki.nginx.org/CommandLine (在“使用信号加载新配置”部分中)
使用HAProxy或Nginx和代理到多个Tornado进程,然后您可以逐个重新启动。 Tornado文档涵盖Nginx ,但它不支持websockets,所以如果你使用它们,你将需要HAProxy。
您可以使用带有龙卷风Web实例的debug = True开关。
T_APP = tornado.web.Application(<URL_MAP>, debug=True)
这反映了处理程序在发生时的变化。
这是你在寻找什么?
修改模块时自动重新启动服务器的模块。 http://www.tornadoweb.org/en/branch2.4/autoreload.html
如果您只想在开发期间使用tornado / python部署新代码而无需重新启动服务器,则可以在此 GitHub存储库中使用realtimefunc
装饰器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.