Подтвердить что ты не робот

Выключение блокировки приложения Python в Google App Engine?

Есть ли какие-либо рекомендации по написанию Google App Engine Код Python, который будет работать без инфраструктуры Google на других платформах?

Есть ли какая-либо известная попытка создать среду с открытым исходным кодом, которая может запускать приложения, предназначенные для Google App Engine, на других платформах?

Edit:

Чтобы прояснить, на самом деле вопрос:

Если я разработаю приложение в Google App Engine сейчас, смогу ли я позже перейти на другую платформу или заблокировать его?

4b9b3361

Ответ 1

В нем есть несколько компонентов, необходимых для полностью портативного приложения:

  • Сама среда выполнения. Это можно портировать относительно просто, настроив сервер CGI или FastCGI, который эмулирует среду App Engine (которая сама по себе представляет собой слегка улучшенный CGI). Большая часть кода для этого уже находится в SDK. К сожалению, для этого пока нет простого набора пакетов.
  • Хранилище данных. Самым сложным API для порта. Выполняется ряд усилий: AppScale работает на EC2/Eucalyptus/Xen и использует бэкэнд HyperTable или HBase; он по-прежнему очень бета-качества, и они не распространяют раздельный разъем данных (это начало полного запуска приложения "ваше приложение" на вашем собственном уровне). Jens пишет /SQLite backend, и там есть мой собственный проект BDBDatastore, который использует BDB-JE в качестве бэкэнд и полностью функциональный (хотя и бета-качество). AppDrop, о котором упоминали другие, просто использует сервер разработки в качестве бэкэнд и, следовательно, не подходит для использования в производстве.
  • API-интерфейс пользователя нуждается в замене чем-то другим, например API на основе OpenID. Опять же, довольно простые, но не готовые решения.
  • API-интерфейсу Memcache требуется бэкэнд, который использует стандартные резервные копии memcache.
  • Другие API имеют полностью функциональные бэкэнды как часть SDK, поэтому на самом деле не нужно портировать.
  • Поддержка Cron также потребует реализации, как и фоновая обработка, XMPP и т.д., когда они станут доступными.

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

Ответ 2

Используйте инфраструктуру высокого уровня, которая работает в App Engine. Таким образом вы можете переносить свой код на другие серверы, когда захотите.

django был исправлен и портирован для работы в проекте Appengine patch и является наиболее используемым FW для appengine.

Возможно, вы захотите сослаться на этот шаг за шагом на запустить приложение django в приложении:

Что касается параллельной инфраструктуры для запуска приложения с движком приложения, это еще далеко. Сам App Engine не так популярен, как полагают люди, и Google хотел, чтобы это было. Кроме того, сложнее разработать встроенную структуру WebApp, чем на django.

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

Ответ 3

До сих пор я нашел экспериментальный хост под названием app-drop, который способен размещать проекты приложений Google. Это должно означать, что по меньшей мере можно запускать проекты движка приложений вне инфраструктуры Google.

Это, однако, явно еще не подходит для производства.

Ответ 4

Вы можете создавать приложения AppEngine, используя фреймворк Django python (хотя поддерживаемая версия немного отстает от последней версии Django). Там, где вы теряете переносимость (по крайней мере сейчас), используется GQL/BigTable для сохранения. Это проприетарная платформа базы данных Google. Как упоминал Хэнк, это одна из самых больших причин для использования AppEngine, но она также является самой большой точкой блокировки.

Вот несколько ссылок на поддержку Django в AppEngine и GQL/BigTable:

Ответ 5

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

Ответ 6

AppDrop является доказательством концептуального порта AppEngine для Amazon Web Services/Elastic Computing, завершенного в апреле 2008 года. Он использует плоский файл вместо BigTable и работает в одном экземпляре, поэтому возникают проблемы масштабирования; но разработчик говорит, что потребовалось всего четыре дня, и, возможно, эти ограничения могут быть решены другими.

Ответ 7

В последнее время очень легко с помощью ресурсов WHIFF я делал обратную миграцию из Vanilla Unix в движок приложений. В основном конфигурируйте любую платформу, зависящую как ресурс, а затем замените/замените ресурсы на разных конфигурациях.

http://piopio.appspot.com/W1000_1000.resources

также см.

http://aaron.oirt.rutgers.edu/myapp/docs/W1100_1200.wwiki

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

Ответ 8

Проверьте typhoonae. он в бета-версии, но вполне применим - мы перенесли одно из наших приложений на внутренний сервер, на котором запущен этот стек.

Ответ 9

AppScale - самая зрелая версия Google App Engine с открытым исходным кодом. Он находится в разработке с 2008 года и в настоящее время поддерживает все четыре языка: Python, Java, Go и PHP. Сегодня у пользователей есть свои приложения.

Часто задаваемые вопросы объясняют, какие API поддерживаются и чего не хватает: https://github.com/AppScale/appscale/wiki/FAQs

(Отказ от ответственности: я работаю над проектом)