Made it work. And yes - Thread local has nothing to do with this... :)
I have set a global variable and defined it as global in each function modifying it (as per this very helpful answer)
import socket
import threading
import SocketServer
data = ""
class UDPHandler(SocketServer.BaseRequestHandler):
def handle(self):
global data
data = self.request[0].strip()
class ThreadedUDPServer(SocketServer.ThreadingMixIn, SocketServer.UDPServer):
pass
if __name__ == "__main__":
ReceiverSocket = ThreadedUDPServer(("localhost",11111), UDPHandler)
ServerThread = threading.Thread(target=ReceiverSocket.serve_forever)
ServerThread.start()
while 1:
if data:
print data
data = ""