Обертка над Docker

Функции для поиска и загрузки требуемых образов, запуска контейнеров, Python кода и тестового прогона. Так же содержит функцию получения комментария от ИИ. -

python_runner_bot.docker_runner.ai_explain(execution_result, lang, python_version) str

Запрос комментария от ИИ. Работает на основе публичного API из открытых источников.

Параметры:
  • execution_result (str) – Результат выполнения

  • lang (str) – Код используемой локализации

  • python_version (str) – Используемая версия Python

Результат:

Ответ от ИИ

Тип результата:

str

python_runner_bot.docker_runner.client = <docker.client.DockerClient object>

Объект для взаимодействия с Docker Engine

python_runner_bot.docker_runner.init()

Подготовка всех образов с версиями Python, перечисленными в модуле констант

python_runner_bot.docker_runner.log = <Logger docker_runner (WARNING)>

Объект для логгирования

python_runner_bot.docker_runner.prepare_image(target: str = 'python:3.12.3') None

Подготовка указанного образа Docker - поиск среди уже загруженных и загрузка при отсутствии такового.

Параметры:

target (str) – Наименование требуемого образа

async python_runner_bot.docker_runner.run_python_code(code: str, msg: Message, user_id: int)

Формирование команды на запуск Python кода в контейнере с использованием предпочитаемой пользователем версии Python (образа). Запуск и ожидание результатов работы контейнера. В процессе работы запрашивает комментарий от ИИ при наличии чего-либо в потоке ошибок (STDERR) и редактирует сообщение, указывая этап выполнения (начато выполнение, получен результат, запрос комментария ИИ при ошибке, отправка итогового результата пользователю)

Параметры:
  • code (str) – Текст, трактуемый как код на языке Python

  • msg (aiogram.types.Message) – Объект сообщения с необходимой для редактирования текста сообщения информацией и методом

  • user_id (int) – Идентификатор пользователя, используемый для получения настроек пользователя и использования в функции запуска контейнера

async python_runner_bot.docker_runner.test_run()

Функция для проведения тестового прогона с замерами времени между запуском контейнера и запуском кода, а также между завершением работы кода и удалением контейнера.

Результат:

Сообщение с временными метками и расчитанным временем оверхеда

Тип результата:

str