timer for a function

mk mrkafk at gmail.com
Tue Feb 9 10:55:47 EST 2010


Stephen Hansen wrote:
>     Question: how can I do that? Use another threaded class? Is there
>     some other way?

First of all, thanks for answer!

> What OS? Does this have to be OS-independant? 

Err, sorry -- this is Linux/UNIX only.

> Are you using more then 
> one transport/SSLClient in your process and you want to just kill one 
> (and any of its child threads), or are you doing one per process?

I'm using multiple threads myself, one per IP basically, which in turn 
call paramiko calls, which itself is threaded.

> If you want to terminate -all- threads your process is running in a 
> given timeframe, using a SIGALRM in the signal module will do it, I 
> believe-- provided you don't need to support windows. 

Thanks, that's still useful! Although...

1. if I don't install signal handler for SIGALRM I get this printed on 
the console at the end of execution:

Alarm clock

Although it does seem to close cleanly.

Is there any way to suppress this message?


2. If I do install signal handler for SIGALRM, I'm back at square one:

Exception in thread Thread-25 (most likely raised during interpreter 
shutdown):
Traceback (most recent call last):
   File "/usr/lib/python2.4/threading.py", line 442, in __bootstrap
   File "./cssh.py", line 1003, in run
   File "./cssh.py", line 739, in ssh_connect_for_scp
   File "build/bdist.linux-i686/egg/paramiko/transport.py", line 1006, 
in connect
   File "build/bdist.linux-i686/egg/paramiko/transport.py", line 1382, 
in _log
exceptions.TypeError: 'NoneType' object is not callable
Unhandled exception in thread started by

This happens even though I surround "connect" (line 1006) with catching 
all Exceptions:

try:
     self.trans.connect(hostkey=None, username=self.username, pkey = pkey)
except Exception, e:
     self.conerror = str(e)

	

>I had a contextlib 
> manager do that for awhile. If you only want to terminate one (and its 
> child-threads)... you're out of luck, I think. The only way to terminate 
> a thread in Python is with conditions/events/whatever and the thread 
> cooperating and exiting on its own.

I will probably have to get the library author look at this.

Regards,
mk




More information about the Python-list mailing list