Ошибка port 49999 not open
Эта ошибка не означает, что нужно открыть порт песочницы для внешнего доступа. На 49999 внутри песочницы работает сервис Code Interpreter. Методы runCode и run_code обращаются к нему для выполнения кода.
Ошибка возникает, когда пользовательский шаблон создан из обычного образа: в нём нет сервиса Code Interpreter или команды, которая запускает этот сервис. Публикация порта эту проблему не решит.
Как исправить
Создавайте пользовательский шаблон на основе управляемого шаблона code-interpreter. Он уже содержит сервис выполнения, команду запуска и проверку готовности.
В примере ниже ключевая строка — fromTemplate("code-interpreter"). Остальные вызовы показывают, что поверх базового шаблона можно установить пакет, собрать собственный шаблон и по-прежнему выполнять код:
const templateName = process.env.TEMPLATE_NAME ?? "custom-code-interpreter";
const template = Template()
.fromTemplate("code-interpreter")
.pipInstall("humanize==4.13.0");
await Template.build(template, templateName);
const sandbox = await Sandbox.create(templateName);
try {
const execution = await sandbox.runCode(
"import humanize; humanize.intcomma(1234567)",
);
console.log(execution.text);
} finally {
await sandbox.kill();
}Если Code Interpreter не нужен, используйте обычную песочницу и запускайте программы как команды. Для Code Interpreter используйте управляемый шаблон или его производный шаблон.