* Jordan Apgar:
I'm trying to run two servers in the same program at once.  Here are
the two:
class TftpServJ(Thread):
    def __init__(self, ip, root, port=69, debug = False ):
        Thread.__init__(self)
        setup stuff here

    def run(self):
        try:
            self.server.listen(self.ip, self.port)
        except KeyboardInterrupt:
            pass

and
class XMLServer(Thread):
    def __init__(self, host, port, hostid, rsa_key):
        Thread.__init__(self)
         setup stuff

    def run(self):
        self.server.serve_forever()


I call them as:
tftpserv = TftpServJ(host, "/home/twistedphrame/Desktop/xmlrpc_server/
server")
tftpserv.run()
xmlserv = XMLServer(host, port, HostID, key)
xmlserv.run()

Here you're just calling the tftpserv.run method directly, not on a separate 
thread.

So it blocks until it's finished (which probably is never?).

Instead, try using

  tftpserv.start()


According to the docs, "It [the start method] must be called at most once per thread object. It arranges for the object’s run() method to be invoked in a separate thread of control."

You may have to decide on how you want your program to terminate, if you want 
that.





it seems that tftpserv runs but wont go on to spawn xmlserv as well.
do I need to fork if I want both these to run at the same time?  It
was my impression that by using Thread execution in the main program
would continue.

See above.

Cheers & hth.,

- Alf
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to