How to get a raised exception from other thread

dcrespo dcrespo at gmail.com
Tue Oct 18 16:46:01 CEST 2005


> Before, after, or during the .start() call, or somewhere else?

I'd like to catch *just after* the .start() call.

> I'm quite sure the problem you are trying to solve can be solved, but
> you are still describing part of the solution you believe you need,
> rather than explaining why you want to do this (which may let us show
> you other, simpler or cleaner ways to accomplish your goals).

The thing is that I have in ProgramB a class derived from
threading.Thread, that runs a TCPServer, listening to a port on local
ip address.

As you surely know, you have to specify certain parameters when
instantiating the tcpserver:

SocketServer.TCPServer(server_address, RequestHandlerClass)
where server_address is a tuple (ip,port)
ip has to be one of three modes of values (If I remember well):

1. A null string ''
   Listens on all IP local address

2. A string containing the local IP address where you want it to listen
   Listens only in the specified local IP address

3. A string containing "localhost".
   Listens only for connections from "localhost".

Here comes the problem:
When you specify the case number 2, the IP must be valid for the
computer where the program runs, otherwise, it raises an exception
saying that "Can't assign requested address".
The TCPServer class, defined in a module, is ran (instantiatedly) from
the main program through a started thread. The thread also is in the
same module as TCPServer class.
It looks like (it's much more code than this. If you want the whole
code, tell me):

MainProgram.py
...
SrvrTCP = module.ThreadedTCPServer(ip,port)
SrvrTCP.start()
#Here, I want to know if the TCPServer started well.
...


module.py
...
class ThreadedTCPServer(threading.Thread):

    def __init__(self, ip,port):
        threading.Thread.__init__(self)
        self.ip= ip
        self.port= port

    def run(self):
        TCPServer((self.ip,self.port)) #Here, if the self.ip is
invalid, it raises an exception.
...




More information about the Python-list mailing list