Как Google App Engine ограничивает Python? - PullRequest
0 голосов
/ 21 декабря 2010

Кто-нибудь знает, как GAE ограничивает интерпретатор Python? Например, как они блокируют операции ввода-вывода или операции URL.

Общий хостинг тоже как-то это делает?

Ответы [ 4 ]

1 голос
/ 21 декабря 2010

С сайта Google:

  • Приложение может получить доступ к другим компьютерам в Интернете только через предоставленные службы загрузки URL-адресов и службы электронной почты.Другие компьютеры могут подключаться к приложению только путем выполнения запросов HTTP (или HTTPS) на стандартные порты.

  • Приложение не может выполнить запись в файловую систему.Приложение может читать файлы, но только файлы, загруженные с кодом приложения.Приложение должно использовать хранилище данных App Engine, memcache или другие службы для всех данных, которые сохраняются между запросами.

  • Код приложения запускается только в ответ на веб-запрос, задачу в очереди илизапланированное задание и должно вернуть данные ответа в течение 30 секунд в любом случае.Обработчик запроса не может порождать подпроцесс или выполнять код после отправки ответа.

Кроме того, вы застряли в Python 2.5, вы не можете использовать любой C-на основе расширений, более современные версии веб-фреймворков в некоторых случаях не будут работать (снова Python 2.5).

Вы можете прочитать всю статью Что такое Google App Engine? .

1 голос
/ 21 декабря 2010

Песочница «внутренне работает», имея специальную версию интерпретатора Python. Вы не используете стандартный исполняемый файл Python, но он специально модифицирован для работы на движке Google App.

Обновление:

И нет, это не виртуальная машина в обычном смысле. Каждое приложение не имеет полноценного виртуального ПК. Возможно, происходит некоторая виртуализация, но Google не говорит точно, сколько или что.

Процесс обычно имеет в операционной системе уже ограниченный доступ к остальной части ОС и аппаратному обеспечению. Google ограничил это еще больше, и вы получаете среду, в которой вам разрешено только читать очень специфические части файловой системы, а не писать в нее вообще, вам не разрешается открывать сокеты и не разрешается делать системные вызовы и т. Д. .

Я не знаю, на каком уровне OS / Filesystem / Interpreter каждое ограничение реализовано.

0 голосов
/ 21 декабря 2010

IMO это не стандартный python, а версия, специально исправленная для движка приложения.Другими словами, вы можете думать более или менее как «высокоуровневая» виртуальная машина, которая, однако, не эмулирует инструкции x86, а опкоды Python (если вы не знаете, что они делают, попробуйте написать небольшую функцию с именем «foo» и выполнить импорт)dis; dis.dis (foo) "вы увидите коды операций python, которые сгенерировал компилятор).

Исправляя python, вы можете накладывать на него любые ограничения, какие захотите.Однако вы, конечно, должны запретить использование предоставленных пользователем модулей расширения C / C ++, поскольку модуль C / C ++ будет иметь доступ ко всему, к чему может получить доступ процесс.

Используя такую ​​виртуальную среду, вы сможетебезопасно запускать код Python без необходимости использовать отдельную виртуальную машину x86 для каждого экземпляра.

0 голосов
/ 21 декабря 2010

Я нашел этот сайт

, который имеет довольно приличную информацию.Что именно вы пытаетесь сделать?

Здесь

FRESH!

Смотрите здесь: http://code.google.com/appengine/docs/python/runtime.html

Ваши операции ввода-выводаограничены следующим образом (кроме отключенных модулей):

App Engine записывает, сколько каждого ресурса приложение использует в течение календарного дня, и считает ресурс исчерпанным, когда эта сумма достигает квоты приложения для ресурса.,Календарный день - это 24-часовой период, начинающийся в полночь по тихоокеанскому времени.App Engine сбрасывает все измерения ресурсов в начале каждого дня, за исключением сохраненных данных, которые всегда представляют объем используемого хранилища данных.

Когда приложение использует весь выделенный ресурс, ресурс становится недоступным до тех пор, покаквота пополняется.Это может означать, что ваше приложение не будет работать до тех пор, пока квота не будет пополнена.

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

Resource |Бесплатная квота по умолчанию |Оплата по умолчанию включена Квота Blobstore | Сохраненные данные |1 ГБ |1 ГБ бесплатно;нет максимального ресурса | Оплата включена |Дневной лимит квоты по умолчанию |Максимальная скорость Blobstore API Calls | 140 000 000 вызовов |72 000 звонков в минуту

Хм, мой стол не так хорош, но, надеюсь, все еще читабелен.

РЕДАКТИРОВАТЬ: ОК, я понимаю.Но, сэр, вам не нужно было использовать слово "f".:) И вы знаете, это как сценарий «научить человека ловить рыбу».Google - это тот, кого я всегда спрашиваю, и поэтому я отвечаю на вопросы здесь для забавы.

ИЗМЕНИТЬ СНОВА: Хорошо, это имело смысл, прежде чем комментарий был принят.Поэтому я пошел и ответил на вопрос немного больше.Надеюсь, это поможет.

...