Вопрос по python, interpreter, web-applications – Как встроить интерпретатор Python на сайт
Я пытаюсь создать образовательный сайт, похожий наCodecademy, но я, честно говоря, в растерянности относительно того, какие шаги следует предпринять. Могу ли я указать правильное направление, включая даже простой интерпретатор Python в веб-приложение?
Одним из последних вариантов для этого является использованиеРЕПЛ.
Эта опция замечательная, потому что компиляторыare made using JavaScript Итакcompilation а такжеexecution сделано вuser-sideЭто означает, что на сервере нет уязвимостей.
У них есть компиляторы для:Python3, Python, Javascript, Java, Ruby, PHP...
Я настоятельно рекомендую вам проверить их сайт по адресуhttp://repl.it
Одним из вариантов может быть использование PyPy для создания изолированного питона. Это ограничит внешние операции, которые кто-то может сделать.
Как только вы это настроите, ваш сайт получит исходный код, отправит его через ajax на ваш веб-сервер, и сервер выполнит код в подпроцессе изолированного экземпляра python. Вы также сможете убить процесс, если он займет более 5 секунд. Затем вы возвращаете вывод обратно как ответ клиенту.
Посмотрите эти ссылки для помощи в песочнице PyPy:
http://doc.pypy.org/en/latest/sandbox.html
http://readevalprint.com/blog/python-sandbox-with-pypy.html
Для создания полностью интерактивного REPL потребуется еще больше усилий. Вам нужно будет поддерживать работу переводчика для каждого клиента на вашем сервере. Затем примите ajax & quot; линии & quot; ввода и пропустите их через интерфейс, связавшись с запущенным процессом, и верните результат.
В целом, не тривиально. Вам понадобятся некоторые сильные навыки разработки, чтобы сделать это комфортно. Вы можете найти эту задачу немного сложной, если вы только учитесь.
Здесь можно сделать больше, чем вы думаете.
Основная проблема в том, что выcannot пусть люди запускают произвольный код Python на вашем веб-сервере. Например, что произойдет, если они делают
import os
os.system("rm -rf *.*")
Очевидно, что вы должны безопасно запустить этот код Python. Ноthen у вас есть проблема защиты Python, которая в принципе невозможна из-за ее динамичности. Поэтому вам, вероятно, придется запускать оболочку Python на виртуальной машине, которая имеет свои собственные головные боли.
Вы видели, например,http://code.google.com/p/google-app-engine-samples/downloads/detail?name=shell_20091112.tar.gz&can=2&q=?