Отключение клиента при ошибке в потоке

У меня есть несколько файлов. В основном файле есть объявление сервера:

from Utils import logger
from Sockets.Server import Server
from config import *

import os
import keyboard
keyboard.add_hotkey('alt+q', lambda: [logger.info("Abort program"), os._exit(1)])

if __name__ == '__main__':
    logger.info("Starting server...")
    server = Server(ip, port)
    server.start()

Сервер у меня на сокете, поэтому переадресовываю клиентов на отдельные потоки:

logger.info("Listening socket...")
self.socket.listen()
logger.info("Server Started on "+self.ip+":"+str(self.port))
while True:
    connection, addres = self.socket.accept()
    thread = threading.Thread(target=self.handle_connection, args=(connection, addres))
    self.threads+=1
    thread.start()

И хотелось бы, чтобы при ошибке в потоке вызывалась функция из класса Server:

def abort_connection(self, msg, connection):
   logger.info("Creating Error packet")
   packet = ErrorPacket(msg)
   logger.info("Sending packet...")
   packet.send(connection)
   logger.info("Closing connection...")
   self.close_connection(connection)

def close_connection(self, connection):
   connection.close()
   logger.info("Connection closed")
   self.threads-=1
   logger.info("Thread closed")
   exit()

Могу ли я как-то объявить переменную Server глобальной во всех файлах? Import - не вариант, ибо будет рекурсия импортов. Возможно стоит передавать класс сервер во все классы? Но я считаю это ужасным решением.


Ответы (0 шт):