Форум сайта python.su
Добрый день. Подскажите, как получить переменную self.data из метода handle() в классе TCP_server_test(socketserver.BaseRequestHandler)? Пример взял из документации по socketserver. Спасибо.
import threading import socketserver class TCP_server_test(socketserver.BaseRequestHandler): def handle(self): self.data = str(self.request.recv(1024), 'utf-8') if self.data: thread = threading.current_thread() response = bytes("Поток {} с номером {}: {}".format(thread.name, thread.ident, self.data), 'utf-8') self.request.sendall(response) print("Инфа клиента:", self.data) # Проверка сколько запущенных потоков print("Запущенные потоки") for thread in threading.enumerate(): print(thread.name) else: print("Нет соединения с клиентом") class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer): pass if __name__ == '__main__': HOST, PORT = "127.0.0.1", 5000 server = ThreadedTCPServer((HOST, PORT), TCP_server_test) #srv = TCP_server_test() while server: server_thread = threading.Thread(target=server.handle_request()) server_thread.daemon = True server_thread.start() #print(srv.data)
Офлайн
server.data Но атрибут self.data должен быть определён до вызова метода handle по этому в класс TCP_server_test стоит добавить что то вроде этого
def __init__(self): self.data = None
Офлайн