Fan*_*Lin 5 python twisted on-the-fly
我开发了一套音频流服务器,所有这些服务器都使用Twisted,当然它们都是Python语言.他们工作,但一个问题一直困扰着我,当我在正在运行的服务器中发现一些错误,或者我想在服务器中添加一些东西时,我需要阻止它们并开始.与HTTP服务器不同,可以随时重新启动它们,但对于音频流服务器则不行.一旦我重新启动流式传输服务器,这意味着我的用户将遇到断开连接.
我确实尝试设置一个沙井(一个用于Twisted服务器的ssh服务,你可以登录并在控制台中输入Python代码来做某事),并连接到控制台,即时重新加载Python模块.它有时很有效,但很难控制.你永远不知道服务器中有多少旧类的实例,其中一些可能很难达到,类的关系会非常复杂.此外,它可能在某些情况下有效,但有时您确实需要重新启动服务器,例如,您正在使用选择器reactor运行服务器,而您希望使用epoll reactor运行它,然后您必须重新启动它.另一个例子,当内存使用率过高时,你也必须重新启动它们.
为了构建这样的系统,我有一个想法,我想是可以将这些连接和数据从一个进程移交给另一个进程.例如:
我们有一个名为Broadcasting的服务器,正在运行的实例在rev.123下,我们想用rev.124替换它.
Broadcasting rev.123 is running....
Startup Broadcasting rev.124 ....
Broadcasting rev.124 is stand by
Hand over connections from instance of rev.123 to instance of rev.124
Stop Broadcasting rev. 123 instance
Run Code Online (Sandbox Code Playgroud)
这可能吗?我不知道套接字句柄的生命周期是否与进程绑定,我认为当创建者进程被杀死时,进程创建的套接字将被关闭,但我不确定.如果有可能,是否有任何指导或文章来设计这种热代码交换机制?有什么东西可以达到我想要的Twisted已经完成了吗?
谢谢.