Разработчики компании «Атвинта» внедрили песочницу для выполнения кода на Python в образовательной платформе. Изначально команда рассматривала Docker, но отказалась от него из-за низкой скорости запуска контейнеров и синхронной обработки запросов, что приводило к очередям при высокой нагрузке.
В качестве решения выбрали движок Piston, использующий контейнеры LXC. Система запускает задачи от имени 150 непривилегированных пользователей и ограничивает ресурсы: максимум 64 процесса и 2048 открытых файлов. Файловая система смонтирована в режиме «только для чтения», что исключает повреждение данных.
Для независимости от внешних сервисов команда хранит образы Piston в собственном реестре. Функционал ограничен только языком Python через настройку репозитория пакетов. Также разработчики внесли правки в index.js, увеличив лимит размера тела запроса для передачи файлов заданий.
Интеграция реализована через Bridge-класс, который управляет API-запросами к Piston. Перед запуском кода система проверяет наличие среды выполнения и при необходимости создает её. Для учебных целей написан скрипт, ограничивающий импорт сторонних библиотек в коде учеников.
Платформа поддерживает автоматическую проверку заданий через тест-кейсы. Сервисный слой подменяет входные данные, запускает код и сравнивает фактический вывод с ожидаемым результатом. Это позволяет наставникам проверять работы без использования сторонних инструментов.






