У меня есть сервер к которому подключаются клиенты. Как сделать для каждого клиента таймер, что в случае если с его адреса не поступает никакого сообщения пусть к примеру 30 с то вызывалась функция foo() (которая что нибудь у нас подчищает в списках и т д)
import socket
import socketserver
import threading
import time
#обработчик запросов
class TCPRequestHandler(socketserver.BaseRequestHandler):
def handle(self):
#инфа что мы получили
date=self.request.recv(1024)
#получаем результат обработки запроса в виде словаря
answer=result(date,self.client_address)
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
pass
if __name__ == "__main__":
#адрес и порт нашего сервера
HOST, PORT = "localhost", 9001
server = ThreadedTCPServer((HOST, PORT), TCPRequestHandler)
server_thread = threading.Thread(target=server.serve_forever)
server_thread.daemon = False
server_thread.start()
#чтобы сервер закрылся только при исключении, например прерывании с клавиатуры
while True:
try:
time.sleep(1)
except:
break
server.shutdown()
server.server_close()