我有一个内部的cherrypy 服务器,它提供静态文件并回答 XMLRPC 请求。一切正常,但我需要每天 1-2 次更新这个静态文件和数据库。当然我可以停止服务器,运行更新并启动服务器。但这不是很干净,因为通过 XMLRPC 与服务器通信的所有其他代码都会断开连接,并且用户会在浏览器中看到“无法连接”。这增加了额外的复杂性 - 我需要一些外部启动/停止/更新代码,所有更新都可以在cherrypy服务器本身内完美完成。
是否有可能以某种方式以某种方式“暂停”cherrypy,以便它将服务器静态“忙碌”页面,我可以更新数据而不必担心现在有人正在从服务器下载文件 A,我将更新他想要的文件 B,所以他会得到不同的文件版本。
我试图以编程方式实现这一点,但这里有问题。Cherrypy 是多线程的(这很好),所以即使我引入了全局“忙碌”标志,我也需要一些方法来等待所有线程完成现有任务,然后才能更新数据。找不到这样的方式:(。