Вопрос по python, interpreter, web-applications – Как встроить интерпретатор Python на сайт

11

Я пытаюсь создать образовательный сайт, похожий наCodecademy, но я, честно говоря, в растерянности относительно того, какие шаги следует предпринять. Могу ли я указать правильное направление, включая даже простой интерпретатор Python в веб-приложение?

Посмотри на это:doc.pypy.org/en/latest/sandbox.html ChristopheD
Большое спасибо, @ChristopheD. Я прочитаю это. twoxmachine
Вы можете увидеть, как это работает, в блокноте ipython: sudo apt-get install ipython Блокнот ipython Denis
О, это будет очень полезно.IPython Notebook site даже предлагает практические рекомендации по запуску публичного сервера ноутбуков! twoxmachine
Я не самый опытный в использовании инструментов веб-разработки. Я надеюсь узнать как можно больше из проекта с амбициозной целью! twoxmachine

Ваш Ответ

4   ответа
2

Одним из последних вариантов для этого является использованиеРЕПЛ.

Эта опция замечательная, потому что компиляторыare made using JavaScript Итакcompilation а такжеexecution сделано вuser-sideЭто означает, что на сервере нет уязвимостей.

У них есть компиляторы для:Python3, Python, Javascript, Java, Ruby, PHP...

Я настоятельно рекомендую вам проверить их сайт по адресуhttp://repl.it

1

Посмотрите на контейнеры LXC. Они имеют довольно крутой API, который вы можете использовать для создания легких контейнеров Linux. Вы можете запускать команды подпроцесса внутри этого контейнера таким образом, чтобы конечный пользователь не мог связываться с вашим главным сервером.

10

Одним из вариантов может быть использование 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; ввода и пропустите их через интерфейс, связавшись с запущенным процессом, и верните результат.

В целом, не тривиально. Вам понадобятся некоторые сильные навыки разработки, чтобы сделать это комфортно. Вы можете найти эту задачу немного сложной, если вы только учитесь.

Спасибо за описание шагов, которые я должен предпринять. Я подумал, что такой проект может быть сложным. Я благодарен, что вы нашли время, чтобы показать мне веревки! twoxmachine
5

Здесь можно сделать больше, чем вы думаете.

Основная проблема в том, что вы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=?

Проходя некоторые поиски, я знал о некоторых проблемах безопасности, связанных с разрешением произвольного кода. Спасибо, что показали мне реальный пример, он прояснил мне немного! Я перейду к оболочке AJAX, с которой вы связались, чтобы попытаться выяснить, как она реализована. Я ценю, что вы показали это мне. twoxmachine

Похожие вопросы