my question is...
what's the best way to stop this service gracefully?
when try to stop it from the services applet from control panel, it
takes forever and then gives me an error.
currently, the only way i am able to stop it is using the task manager
and killing the process.
Windows services generally use two threads: one to do the work and one to
listen for messages from the
whatever-the-component-is-called-to-control-services.
When the message thread received a 'stop' message, it should inform the
worker thread to shut down, e.g. using threading.Event. So your worker
should regularily check for the shutdown event, e.g.:
while not shutdownEvent.isset():
pollWebsite()
for i in xrange(1800):
if shutdownEvent.isset():
break
time.sleep(1)
But if you get the 'stop' message while the worker thread is in
pollWebsite() and the webserver is sloooow, you'll still have a significant
delay... To avoid this, you would need a http client based on select() that
allows you to check shutdownEvent.isset() at certain intervals - instead of
urlopen which just blocks.
--
Benjamin Niemann
Email: pink at odahoda dot de
WWW: http://www.odahoda.de/
This one seems simpler:
<http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/59872>
Grig
Use SC.exe (windows-XP) (with popen ?)
For help : sc /?
You can, also, try :
qprocess /?
tasklist /?
taskkill /?
etc.
@-salutations
Michel Claveau
Do I have to register these threads somehow in the beginning?
I'm somewhat new to Python so please be patient...
Or perhaps "it" is just looking for correct capitalization, since Python
is case sensitive. Try shutdownEvent.isSet() instead.
-Peter