odoo/setup/win32/win32_service.py

54 lines
1.8 KiB
Python
Raw Normal View History

[REF] Packaging: Backport of v8 packaging [REF] Packaging: backport of a7ab5a4109ec99d77f61a6d4c8bc7696149ea09c [REF] Packaging: backport of a700a1139ee19d71bc4669ff74bc53c87b38dc7b [REF] Packaging: backport of 9d0bd2807e2c2b949ece62fd6be04a1cf39c8e0d [REF] Packaging: backport of b0722d3e5d6bebdf19dc29b8ba04651ae508839f [REF] Packaging: backport of 24b2c93814dfa18fa1aa88bb0497a73b7b8b3e6e [REF] Packaging: backport of e874cdafaa9675251cd7852b8e9b1662cee7d19a [REF] Packaging: backport of 56b61da16387e642130477e604022207a77e3f74 [REF] Packaging: backport of be96dd85959528b86f7535b9b4cc0dc86981ca33 [REF] Packaging: backport of 50a4da99f051d125b8435477657ee2b115a8e0bd [REF] Packaging: backport of 1c41f3699303da770797002025b7c8226fb562eb [REF] Packaging: backport of cc11331733a5cb8aff6c7f0d4def1404e83b80e8 [FIX] Packaging: backport of 134716308266ff [REF] Package: backport of 93845d683c0420118c162eb855abb690150b692d [REF] Package: backport of 012bc01c113c8d008a0eb94219f1cb519519ff0d [FIX] Package: partial apply of d9e72a3716488ce8 [REF] Package: backport of 67036feff4f3d2d86a9e9e3e19f85fc183f466c6 [REF] Package: backport of 73de0138dedfe0faaae857544746915315a0dbeb [REF] Package: backport of 30d987ed30e64a498ef392a0aa83ca7f4d220a97 [REF] Package: backport of 29132669a16792a84960f03c5627f04e0ad8ff6a [REF] Package: backport of 7db12dc47b1e89ba0a7315c567fafdc722f47b90 [REF] Package: backport of f668f9c6cdc4fcea1c647959feed42359eb78009 [REF] Package: backport of 2cf4051a1556d64a1ff321658c4c2e0a60a13132 [REF] Packaging: backport of 735924878f89041f3b74540848baef71790872a1 [REF] Packaging: backport of f2598ecdce169f8134ff1f5c84eb12e14a5d6f34 [REF] Package: backport of fd21912cfe76f90447059cdf2617bcd7631cc122 [REF] Package: backport of 9a8cdf49b08ce9e1b4238bf122ee2c4271d44f62 [REF] Package: backport of 2f4984b8381c6407a720b122733242e6cf3101da [REF] Package: backport of 6e9edeeb46d4161bf7be02f570073c9c1edf45c7 [REF] Package: partial backport of d4624fa826a5e9542782f2c53c8ba2c766d093bc [REF] Package: backport of 9f13722f7837a80e423ca6e7a7337d66f900e564
2014-12-19 16:31:12 +00:00
# -*- coding: utf-8 -*-
import servicemanager
import win32api
import win32process
import win32service
import win32serviceutil
import subprocess
import sys
from os.path import dirname, join, split
execfile(join(dirname(__file__), '..', 'server', 'openerp', 'release.py'))
class OdooService(win32serviceutil.ServiceFramework):
_svc_name_ = nt_service_name
_svc_display_name_ = "%s %s" % (nt_service_name, serie)
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.odooprocess = None # Reference to the server's process
def SvcStop(self):
# Before we do anything, tell the SCM we are starting the stop process.
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
# Stop the running Odoo: say it's a normal exit
win32api.TerminateProcess(int(self.odooprocess._handle), 0)
servicemanager.LogInfoMsg("Odoo stopped correctly")
def SvcDoRun(self):
# We start Odoo as an independent process, but we keep its handle
service_dir = dirname(sys.argv[0])
server_dir = split(service_dir)[0]
server_path = join(server_dir, 'server', 'openerp-server.exe')
self.odooprocess = subprocess.Popen(
[server_path], cwd=server_dir, creationflags=win32process.CREATE_NO_WINDOW
)
servicemanager.LogInfoMsg('Odoo up and running')
# exit with same exit code as Odoo process
sys.exit(self.odooprocess.wait())
def option_handler(opts):
# configure the service to auto restart on failures...
subprocess.call([
'sc', 'failure', nt_service_name, 'reset=', '0', 'actions=', 'restart/0/restart/0/restart/0'
])
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(OdooService, customOptionHandler=option_handler)