Python 使Twisted应用程序的某些部分可重新加载的策略或支持?
我已经编写了一个专门的JSON-RPC服务器,并且刚刚开始深入应用程序逻辑,发现不断地停止/重新启动服务器以进行某些更改有点烦人 以前,我有一个处理程序,它每隔一段时间运行,将模块修改的时间戳与过去的检查进行比较,然后根据需要重新加载模块。不幸的是,我不相信它现在能正常工作Python 使Twisted应用程序的某些部分可重新加载的策略或支持?,python,twisted,Python,Twisted,我已经编写了一个专门的JSON-RPC服务器,并且刚刚开始深入应用程序逻辑,发现不断地停止/重新启动服务器以进行某些更改有点烦人 以前,我有一个处理程序,它每隔一段时间运行,将模块修改的时间戳与过去的检查进行比较,然后根据需要重新加载模块。不幸的是,我不相信它现在能正常工作 有没有一种方法可以让反应堆以类似于Paster的可重新加载的HTTPServer的方式停止并重新启动?您可以编写类似于Paster的重新加载程序的内容,如下所示: 启动主函数,在导入/使用任何扭曲代码之前,派生/生成子流程
有没有一种方法可以让反应堆以类似于Paster的可重新加载的HTTPServer的方式停止并重新启动?您可以编写类似于Paster的重新加载程序的内容,如下所示:
subprocess.Popen()
或类似工具来获取stdin/stdout管道。现在在您的子流程中,使用twisted reactor监听stdin(twisted中有相关代码,请参阅twisted.internet.stdio
,它允许您使用协议以通常的twisted非阻塞方式与stdio传输进行通信)
最后,当您决定是时候重新加载时,向子流程的stdin写入一些内容,告诉它关闭。现在,您的扭曲代码可以正常响应并关闭。一旦它完全退出,您的主进程就可以再次生成它
(或者,您可以使用信号来实现这一点,但这可能不是操作系统可移植的)Twisted附带的是模块,因此这可能是一个很好的起点
还有这个问题:我想你的计划可能是我能走的最简单的道路。我目前正在尝试克拉斯特和克莱梅沙的答案。。。将更新我的问题,并根据我的情况选择赢家。你知道,在谷歌搜索问题时遇到了麻烦,回到你3年前提出的问题。它不是完美的,但扭曲了。python.rebuild似乎适合我的情况。