/
basswan
/
py_bot
Обзор
Документация
Войти
/
basswan
/
py_bot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
models/base/executor.py
37 строк
2 KB
basswan
create: logmanager.py, abstractcommand.py, executor.py, invoke.py, main.py
09 апр 2026, 15:59
Верифицирован
09 апр 2026, 15:59
821d5d8
Код
Авторство
О чём код?
from logmanager.logmanager import add_info_to_log, add_error_to_log from models.base.invoke import execute_command from threading import Thread from datetime import datetime from typing import Callable, Any def execute_command_in_thread( command_name: str, on_complete: Callable[[str, bool, float], Any] = None ) -> Thread: """ Асинхронно запускает команду в отдельном потоке. Возвращает объект потока. При завершении можно вызвать callback. """ def target(): start_time = datetime.now() try: add_info_to_log(f'Запуск выполнения команды: {command_name}', __name__) execute_command(command_name) success = True except Exception as e: add_error_to_log(f'Ошибка при выполнении команды {command_name}: {e}', __name__) success = False end_time = datetime.now() duration = (end_time - start_time).total_seconds() add_info_to_log(f'{"Успешно" if success else "Ошибка"} при выполнении команды: {command_name}', __name__) add_info_to_log(f' --- время выполнения: {duration:.2f} сек', __name__) if on_complete: on_complete(command_name, success, duration) thread = Thread(target=target, name=f"Command-{command_name}") thread.start() return thread