def decorated(*args, **kwargs): if args or kwargs: logger.info( f'Функция {func.__name__} вызвана из функции {inspect.stack()[1][3]} с аргументами {args or kwargs}') return func(*args, **kwargs) if not args and kwargs: logger.info(f'Функция {func.__name__} вызвана из функции {inspect.stack()[1][3]} без аргументов') return func
def authenticate(user_data): global client_list # не люблю так делать, переделаю когда будем писать в БД try: client_list.update(user_data) for k, v in user_data.items(): logger.info(f'{k}, Пользователь {v} вошел в чат') return k, 200, f'Пользователь {v} вошел в чат' except: logger.error(f'{k}, Ошибка запроса аутентификации') return k, 400, 'Ошибка запроса аутентификации'
def leave(user_data): global client_list global client try: for k, v in user_data.items(): client_list.pop(k) logger.info(f'{k}, Пользователь {v} вышел из чата') yield k, 200, f'Пользователь {v} вышел из чата' client.close() except: logger.error(f'{k}, Ошибка запроса выхода из чата') return k, 400, f'Ошибка запроса выхода из чата'
def main(): global client global s if client is None: client = s.accept()[0] try: receive_data = json.loads(pickle.loads(client.recv(2048))) logger.info(f'Получен запрос {receive_data}') request(receive_data) except: client = None logger.info('Сервер ждет новых подключений от пользоватлей')
def request(data): print(data) if 'action' in data.keys(): action = data.get('action') if action == 'authenticate': egg = data.get('user') logger.info(f'Запуск функции authenticate с запросом {egg}') responce(authenticate(egg)) if action == 'leave': egg = data.get('user') logger.info(f'Запуск функции leave с запросом {egg}') responce(leave(data.get('user'))) if action == 'get_user_list': responce([None, 500, 'Сервис в разработке']) if action == 'send_message': responce([None, 500, 'Сервис в разработке']) else: logger.error(f'Ошибка команды серверу: {data}')
def responce(data): global client answer = {data[0]: {"response": data[1], "alert": data[2]}} logger.info(f'Отправка ответа на запрос: {answer}') client.send(pickle.dumps(json.dumps(answer)))