在生产部署后重新加载Zope / Plone代码

时间:2018-04-04 15:28:23

标签: deployment plone continuous-deployment zope zodb

有没有办法在生产时重新加载代码而不重新启动Zope? 新功能几乎每两天实施一次,必须上传到服务器。它目前唯一的工作方式是重启zeo服务器和所有实例。不能使用“plone.reload”,因为它只在调试模式打开时才在开发环境中工作。以下是buildout.cfg内容

char

2 个答案:

答案 0 :(得分:2)

如果频繁部署,您可以在低流量时间(即晚上)进行部署。

如果网站应该始终处于启动状态,您可以拥有两组Plone实例:一组处于活动状态并提供服务请求,第二组未处于活动状态。

更新时,将更新脱机服务器,完成后,将关闭交换机(例如HAProxy)以替换活动服务器。

您甚至可以随时使用所有服务器,但是为了更新,请在更新时将其置于脱机状态。

和其他人一样,你也指出,我绝不会在生产中使用plone.reload或类似的开发工具。

答案 1 :(得分:1)

是的,有一种方法,虽然我 从未在生产中这样做 它在开发,重新加载时节省了大量时间在浏览器视图中:

from plone.reload.code import reload_code
from Products.Five.browser import BrowserView


class View(BrowserView):

    def __call__(self):
        reload_code()
        return 'Code loaded.'

然后使用您在网站上注册的名称调用视图。当实例在后台运行时,这甚至可以在非调试模式下工作。使用独立实例(非ZEO)进行测试。