( toMpEr | 2018. 12. 02., v – 15:05 )

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))