【问题标题】:Python: Best method to reload class in XMLRPC ServerPython:在 XMLRPC 服务器中重新加载类的最佳方法
【发布时间】:2010-01-14 14:56:00
【问题描述】:

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

我正在使用这样的方法:

xmlrpc_getUser(self, uid):
    return self.users[uid]

我希望我能做的只是将这些方法用作另一个模块的代理,所以我的方法看起来更像这样

xmlrpc_getUser(self, uid):
    return self.proxy.getUser(uid)

这样我可以更新开发服务器上的代码,然后只需将我的更新代理模块复制到生产服务器,而无需重新启动。

我尝试添加 导入服务代理 到我的 xmlrpc 服务控制器的构造函数,但我认为模块已缓存并且不会重新加载。

有什么好办法吗?谢谢。

【问题讨论】:

    标签: python xml-rpc


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    如果重新加载不起作用,您可以尝试@987654321@;您的应用程序无需使用 Twisted 编写即可使用此 twisted.python 实用程序。

    我最近也看到了这个livecoding 的东西(“Python 的代码重新加载库”),但它谈到了一个自定义模块系统,我不知道那里发生了什么。

    【讨论】:

      猜你喜欢
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      相关资源
      最近更新 更多