Update of /cvs-repository/Zope/skel/bin In directory cvs.zope.org:/tmp/cvs-serv27740/skel/bin
Modified Files: Tag: Zope-2_7-branch zopeservice.py.in Log Message: Major service enhancements. Service cleanly shuts down child, and if child fails the tail of the process output (which generally contains a traceback) is written to the event log. Minor tweaks to the Windows build 'clean' process and documentation tweaks. === Zope/skel/bin/zopeservice.py.in 1.1.2.9 => 1.1.2.10 === --- Zope/skel/bin/zopeservice.py.in:1.1.2.9 Thu Dec 16 13:08:39 2004 +++ Zope/skel/bin/zopeservice.py.in Tue Apr 12 23:41:34 2005 @@ -38,8 +38,9 @@ install : Installs the service - update : Updates the service, use this when you change - the service class implementation + update : Updates the service. Use this if you change any + configuration settings and need the service to be + re-registered. remove : Removes the service @@ -53,13 +54,9 @@ debug : Runs the service in debug mode - You can view the usage options by running ntservice.py without any + You can view the usage options by running this module without any arguments. - Note: you may have to register the Python service program first, - - win32\PythonService.exe /register - Starting Zope Start Zope by clicking the 'start' button in the services control @@ -74,19 +71,17 @@ Event logging - Zope events are logged to the NT application event log. Use the - event viewer to keep track of Zope events. + Service related events (such as startup, shutdown, or errors executing + the Zope process) are logged to the NT application event log. Use the + event viewer to see these events. -Note: to successfully run this script, the Zope software home needs to be on -the PYTHONPATH. -""" + Zope Events are still written to the Zope event logs. -import os.path -from os.path import dirname as dn -import sys +""" +import sys, os # these are replacements from mkzopeinstance -PYTHONW = r'<<PYTHONW>>' +PYTHON = r'<<PYTHON>>' SOFTWARE_HOME=r'<<SOFTWARE_HOME>>' INSTANCE_HOME = r'<<INSTANCE_HOME>>' ZOPE_HOME = r'<<ZOPE_HOME>>' @@ -95,17 +90,35 @@ CONFIG_FILE= os.path.join(INSTANCE_HOME, 'etc', 'zope.conf') PYTHONSERVICE_EXE=r'%s\bin\PythonService.exe' % ZOPE_HOME -os.environ['PYTHONPATH'] = SOFTWARE_HOME +# Setup the environment, so sub-processes see these variables +parts = os.environ.get("PYTHONPATH", "").split(os.pathsep) +if SOFTWARE_HOME not in parts: + parts = filter(None, [SOFTWARE_HOME] + parts) + os.environ["PYTHONPATH"] = os.pathsep.join(parts) +os.environ["INSTANCE_HOME"] = INSTANCE_HOME + +# Ensure SOFTWARE_HOME is on our current sys.path so we can import the +# nt_svcutils package. +if SOFTWARE_HOME not in sys.path: + sys.path.insert(0, SOFTWARE_HOME) from nt_svcutils.service import Service servicename = 'Zope_%s' % str(hash(INSTANCE_HOME.lower())) class InstanceService(Service): - start_cmd = '"%s" "%s" -C "%s"' % (PYTHONW, ZOPE_RUN, CONFIG_FILE) _svc_name_ = servicename _svc_display_name_ = 'Zope instance at %s' % INSTANCE_HOME - _exe_name_ = PYTHONSERVICE_EXE + # _svc_description_ can also be set (but what to say isn't clear!) + # If the exe we expect is not there, let the service framework search + # for it. This will be true for people running from source builds and + # relying on pre-installed pythonservice.exe. + # Note this is only used at install time, not runtime. + if os.path.isfile(PYTHONSERVICE_EXE): + _exe_name_ = PYTHONSERVICE_EXE + + process_runner = PYTHON + process_args = '"%s" -C "%s"' % (ZOPE_RUN, CONFIG_FILE) if __name__ == '__main__': import win32serviceutil _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins