This is a shot in the dark, but if you are on python 2, then:
'RebootMsg': '',
'lpCommand': '',
Is two strings, not unicode. Maybe:
'RebootMsg': u'',
'lpCommand': u'',
--------------------------------------
Randy Syring
Intelicom
Direct: 502-276-0459
Office: 502-212-9913
For the wages of sin is death, but the
free gift of God is eternal life in
Christ Jesus our Lord (Rom 6:23)
On 08/09/2011 08:56 PM, Andrew Hammond wrote:
I did some more hunting around and now have the following:
hscm =
win32service.OpenSCManager(None,None,win32service.SC_MANAGER_ALL_ACCESS)
try:
hs = win32serviceutil.SmartOpenService(hscm, cls._svc_name_,
win32service.SERVICE_ALL_ACCESS)
try:
service_failure_actions = {
'ResetPeriod': 6000000, # Time in seconds after which to
reset the failure count to zero.
'RebootMsg': '',
'lpCommand': '',
'Actions': [(win32service.SC_ACTION_RESTART, 60000),
(win32service.SC_ACTION_RESTART, 60000)]
}
win32service.ChangeServiceConfig2(hs,
win32service.SERVICE_CONFIG_FAILURE_ACTIONS, service_failure_actions)
finally:
win32service.CloseServiceHandle(hs)
finally:
win32service.CloseServiceHandle(hscm)
However, I'm getting the following error message:
TypeError: SERVICE_FAILURE_ACTIONS must be a dictionary containing
{'ResetPeriod':int,'RebootMsg':unicode,'lpCommand':unicode,'Actions':sequence
of 2 tuples(int,int)
Which I think is what I'm feeding it. Can someone please tell me what
I'm doing wrong?
A
On Mon, Aug 8, 2011 at 7:06 PM, Andrew Hammond
<andrew.george.hamm...@gmail.com
<mailto:andrew.george.hamm...@gmail.com>> wrote:
I am trying to control the behavior of a service with regards to
failure handling as described here:
http://blogs.msdn.com/b/jcalev/archive/2008/01/10/some-tricks-with-service-restart-logic.aspx
I have done some reading and have the following snippet of code
that I think is going in the right direction. However I don't know
how to create the action list. I suspect that it should be an
array of unsigned long ints, but... ???
hscm =
win32service.OpenSCManager(None,None,win32service.SC_MANAGER_ALL_ACCESS)
try:
hs = SmartOpenService(hscm, cls._svc_name_,
win32service.SERVICE_ALL_ACCESS)
try:
# What's the pythonic way to create these???
action1 = Action()
action1.Type = win32service.SC_ACTION_RESTART
action1.Delay = 600 # 10 minutes?
action2 = Action()
action2.Type = win32service.SC_ACTION_RESTART
action2.Delay = 600
action3 = Action()
action3.Type = win32service.SC_ACTION_RESTART
action3.Delay = 600
win32service.ChangeServiceConfig2(
hs,
win32service.SERVICE_CONFIG_FAILURE_ACTIONS,
[action1,action2,action3] # again, this isn't
probably right, but... ?
)
finally:
win32service.CloseServiceHandle(hs)
finally:
win32service.CloseServiceHandle(hscm)
Can anyone help please?
Andrew
_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32
_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32