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@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   [EMAIL PROTECTED]
_______________________________________________
Zope-Dev maillist  -  Zope-Dev@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 )

Reply via email to