Python:在XMLRPC服务器中重新加载类的最佳方法

Python:在XMLRPC服务器中重新加载类的最佳方法,python,xml-rpc,Python,Xml Rpc,我有一个多线程xmlrpc服务正在运行,它在内存中存储了大量数据~2G。目前,如果我想更新服务器公开的方法,我必须重新启动服务。这里的问题是,如果我重新启动服务,它需要使用数据库或搁置的数据将内存中的所有数据加载回内存 我使用的方法如下: xmlrpc_getUser(self, uid): return self.users[uid] 我希望我能做的就是使用这些方法作为另一个模块的代理,所以我的方法看起来更像这样 xmlrpc_getUser(self, uid): retu

我有一个多线程xmlrpc服务正在运行,它在内存中存储了大量数据~2G。目前,如果我想更新服务器公开的方法,我必须重新启动服务。这里的问题是,如果我重新启动服务,它需要使用数据库或搁置的数据将内存中的所有数据加载回内存

我使用的方法如下:

xmlrpc_getUser(self, uid):
    return self.users[uid]
我希望我能做的就是使用这些方法作为另一个模块的代理,所以我的方法看起来更像这样

xmlrpc_getUser(self, uid):
    return self.proxy.getUser(uid)
通过这种方式,我可以在开发服务器上更新代码,然后只需将更新代理模块复制到生产服务器,而无需重新启动

我试着加上 导入服务\u代理 我的xmlrpc服务控制器的构造函数,但我认为该模块是缓存的,不会重新加载


有什么好办法吗?谢谢。

你可以用这个方法。您需要编写一些代码来检查模块文件的上次修改时间。

您可以使用该方法。您需要编写一些代码来检查模块文件的上次修改时间。

如果重新加载不起作用,您可以尝试;使用这个Twisted.python实用程序不需要用Twisted编写应用程序


我最近还看到了一个Python代码重新加载库,但它谈到了一个自定义模块系统,我不知道那里发生了什么;使用这个Twisted.python实用程序不需要用Twisted编写应用程序

我最近还看到了一个Python代码重新加载库,但它谈到了一个自定义模块系统,我不知道那里发生了什么。

注意,在Python 3中移动了。注意,在Python 3中移动了。