A thread nem probléma (lásd második példát), de ha multi-process a server akkor igen. (és úgy tűnik, hogy az)
Innen https://github.com/durian/tk102-server/blob/master/tk102-server.py#L325
próbáld a SocketServer.ForkingMixIn -t SocketServer.ThreadingMixIn -el helyettesíteni, vagy itt egy példa a processek közti változómegosztásra (ez is viszonylag egyszerű):
import SocketServer, threading, time, multiprocessing
class RequestHandler(SocketServer.BaseRequestHandler):
def __init__(self, request, client_address, server):
SocketServer.BaseRequestHandler.__init__(self, request, client_address, server)
def handle(self):
data = self.request.recv(1024)
print("Got data", data)
self.server.recv.append(data)
shared = multiprocessing.Manager()
server = SocketServer.ForkingTCPServer(('', 1235), RequestHandler)
server.recv = shared.list()
t = threading.Thread(target=server.serve_forever)
t.setDaemon(True) # don't hang on exit
t.start()
while 1:
time.sleep(1)
print("All recv", list(server.recv))