A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-list/2005-September/315422.html below:

win32 service and time.sleep()

win32 service and time.sleep()Steve Horsley steve.horsley at gmail.com
Thu Sep 22 17:37:12 EDT 2005
Oracle wrote:
> On Tue, 20 Sep 2005 10:49:13 -0400, rbt wrote:
> 
>> I have a win32 service written in Python. It works well. It sends a
>> report of the status of the machine via email periodically. The one
>> problem I have is this... while trying to send an email, the script
>> loops until a send happens and then it breaks. Should it be unable to
>> send, it sleeps for 10 minutes with time.sleep(600) and then wakes and
>> tries again. This is when the problem occurs. I can't stop the service
>> while the program is sleeping. When I try, it just hangs until a reboot.
>> Can some suggest how to fix this?
>>
> 
> You could try doing it the hard way.  In a loop, sleep for 1-5 seconds at
> a time.  Everytime you complete a sleep, check the elapsed time.  If the
> elapsed time is >= the total sleep duration, fall out of the sleep loop
> and try your email again.  This should allow your service to stop within
> 1-5 seconds of your request while imposing little to no load on the system.

I adopted that solution just last week. When you wake (every few 
seconds), you check for a stop flag (and exit if needed of 
course) before checking if its time to do work-work. Works a treat.

Another option is to use a threading.Condition, and have the 
service thread wait(600). The thread that calls to stop the 
service can set the stop flag and then notify() the Condition.

Steve

More information about the Python-list mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4