stop thread from outside 'run'

P

Prashant

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?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,829
Messages
2,569,737
Members
45,522
Latest member
CCPAnne66

Latest Threads

Top