Hi,

I am using tornado web socket server to communicate between python(server) and 
browser(client). To mimic the behavior of sending data to client and get 
results back, I am using threaded approach:

class JobThread(threading.Thread):
    """"""
    def __init__(self, target):
        """"""
        super(JobThread, self).__init__()
        self.target = target
        self.res = None
        self.stoprequest = threading.Event()
        self.start()
        self.join()
        # Execution stops here and wait
        return self.result()
        
    def run(self):
        """ Start this thread """
        self.target()
        while not self.stoprequest.isSet():
            print "running..."

    def result(self):
        """"""
        return self.res

    def kill(self, result):
        """ Kill this thread """
        self.res = result
        self.stoprequest.set()

def ReceiveData(message):
    """"""
    global t
    print str(message)
    t.kill(message)

def SendData(data_string):
    """"""
    sendMessageWS(data_string)

result = JobThread(partial(SendData, data_string))

As soon as jobThread instance starts it sends data to websocket and wait for 
client to response. Client is sending back results but 'ReceiveData' is not 
getting called because of infinite loop in 'run' method. The only way you can 
stop the thread is from outside when "ReceiveData" executes and kill the 
threaded instance 't'. 

Any pointers?
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to