[Zope-dev] Re: moment when zope was started.

Florent Guillaume fg at nuxeo.com
Wed Nov 9 05:54:26 EST 2005


If you go to the control panel of a running Zope, you'll see it display 
"Running For" with the correct number of seconds. So there's obviously an 
existing way for the server to know when it was started, just look how the 
control panel does it.

Florent

Victor Safronovich wrote:
> VS>    How could i find the moment when zope was started in Zope 2.8?
> VS>    in  Zope  2.7  was the variable 'Zope.Startup.started', which setted to True when
> VS>    zope was started.
> 
> VS>    But in Zope 2.8 the variable 'Zope2.Startup.started' not changed its value to
> VS>    True, because Zope2.Startup.start_zope was never called, instead of that called
> VS>    Zope2.Startup.run.run function.
>    this may be fixed like in attachment.
> 
> 
> 
> ------------------------------------------------------------------------
> 
> Index: __init__.py
> ===================================================================
> --- __init__.py	(revision 39858)
> +++ __init__.py	(working copy)
> @@ -28,13 +28,17 @@
>  
>  logger = logging.getLogger("Zope")
>  started = False
> +starter = None
>  
>  def get_starter():
> -    check_python_version()
> -    if sys.platform[:3].lower() == "win":
> -        return WindowsZopeStarter()
> -    else:
> -        return UnixZopeStarter()
> +    global starter
> +    if starter is None:
> +        check_python_version()
> +        if sys.platform[:3].lower() == "win":
> +            starter = WindowsZopeStarter()
> +        else:
> +            starter = UnixZopeStarter()
> +    return starter
>  
>  def start_zope(cfg, debug_handler):
>      """The function called by run.py which starts a Zope appserver."""
> @@ -47,11 +51,11 @@
>      starter.setConfiguration(cfg)
>      starter.prepare()
>  
> -    started = True
> +    starter.start()
>      try:
>          starter.run()
>      finally:
> -        started = False
> +        starter.finish()
>  
>  
>  class ZopeStarter:
> @@ -59,6 +63,8 @@
>  
>      Making it a class makes it easier to test.
>      """
> +    started = False
> +
>      def __init__(self):
>          self.event_logger = logging.getLogger()
>          # We log events to the root logger, which is backed by a
> @@ -81,6 +87,14 @@
>      def setConfiguration(self, cfg):
>          self.cfg = cfg
>  
> +    def start(self):
> +        global started
> +        self.started = started = True
> + 
> +    def finish(self)
> +        global started
> +        self.started = started = False
> +
>      def prepare(self):
>          self.setupInitialLogging()
>          self.setupLocale()
> Index: run.py
> ===================================================================
> --- run.py	(revision 39858)
> +++ run.py	(working copy)
> @@ -15,11 +15,7 @@
>  def run():
>      """ Start a Zope instance """
>      import Zope2.Startup
> -    starter = Zope2.Startup.get_starter()
> -    opts = _setconfig()
> -    starter.setConfiguration(opts.configroot)
> -    starter.prepare()
> -    starter.run()
> +    Zope2.Startup.start_zope(_setconfig().configroot, None)
>  
>  def configure(configfile):
>      """ Provide an API which allows scripts like zopectl to configure
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev at zope.org
> http://mail.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists - 
>  http://mail.zope.org/mailman/listinfo/zope-announce
>  http://mail.zope.org/mailman/listinfo/zope )


-- 
Florent Guillaume, Nuxeo (Paris, France)   CTO, Director of R&D
+33 1 40 33 71 59   http://nuxeo.com   fg at nuxeo.com


More information about the Zope-Dev mailing list