Использование web.py на Appengine

Я ищу простую веб-инфраструктуру Python, которая работает как автономно, так и на Appengine.

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

Когда я проверил, web.py выглядел простым и многообещающим. У меня есть следующие вопросы:

  • Хорошо ли работает web.py на Appengine?
  • Есть ли какие-либо основные известные ошибки?
  • Можете ли вы поделиться своим опытом использования web.py в Appengine?
  • Приветствуются любые предложения по достижению вышеупомянутой цели.

person 18bytes    schedule 04.08.2011    source источник
comment
Связанный вопрос stackoverflow.com/questions/3665292/ web-py-на-движке-приложения-google   -  person Charles Ma    schedule 04.08.2011


Ответы (4)


Хорошо ли работает web.py на Appengine?

Да, он работает довольно хорошо, он компактный и очень простой в использовании.

Есть ли какие-либо основные известные ошибки?

Web.py не предлагает какой-либо уровень абстракции данных, совместимый с GAE; это означает, что для переключения с РСУБД на базу данных NoSQL вам необходимо самостоятельно создать уровень над уровнем API базы данных web.db и приложение Google API хранилища данных Engine.

Можете ли вы поделиться своим опытом использования web.py в Appengine?

Я развернул пару простых приложений с web.py поверх GAE и несколько других домашних проектов с Sqlite. как база данных; здесь небольшой обзор.

Приветствуются любые предложения по достижению вышеупомянутой цели.

Если переход с Appengine на RDBMS является вашей основной задачей, обратите внимание на web2py.
Хотя с некоторые ограничения, насколько мне известно, это единственная веб-инфраструктура Python Совместимость с GAE, которая предлагает DAL над хранилищем данных App Engine и несколькими другими решениями RDBMS.
Переключение с одной базы данных на другую — это просто вопрос инициализации DAL с помощью соответствующей строки подключения:

db = DAL('sqlite://storage.db')
db = DAL('mysql://username:password@localhost/test')
db = DAL('gae')
person systempuntoout    schedule 04.08.2011
comment
похоже, что web2py - это решение моей проблемы. Насколько я понимаю, один и тот же код можно развернуть как на GAE, так и на моем сервере за пределами GAE. - person 18bytes; 05.08.2011

Ни одна инфраструктура веб-приложений сама по себе не сможет этого сделать — среда App Engine состоит из гораздо большего, чем просто интерфейс базы данных и среда CGI. Даже если бы это было возможно, любой DAL, который поддерживает как хранилище данных, так и реляционную БД, скорее всего, пожертвует большей частью гибкости обоих в погоне за этим.

Лучший вариант, если вы хотите использовать больше, чем просто хранилище данных, — написать приложение для App Engine и использовать AppScale или TyphoonAE для запуска приложения вне среды App Engine. .

person Nick Johnson    schedule 08.08.2011
comment
@systempuntoout Веб-приложение можно заставить нормально работать вне App Engine. Но App Engine также состоит из очереди задач, API изображений, Users API, поддержки Cron и так далее и тому подобное. Если он не только использует хранилище данных, что маловероятно, для переноса требуется нечто большее, чем просто DAL. - person Nick Johnson; 08.08.2011
comment
о, это верно, и я согласен с вами. Я предложил web2py, потому что OP попросил что-то полезное вне gae без проблем с точки зрения базы данных; очевидно, он может работать только для приложений с тривиальной структурой базы данных. - person systempuntoout; 08.08.2011
comment
К вашему сведению, webapp2 работает вне App Engine и полностью совместим с webapp. - person moraes; 09.08.2011
comment
@moraes Я знаю - это не имеет отношения к тому, что я пытался донести. - person Nick Johnson; 10.08.2011
comment
@ Ник Джонсон, извините, это была заметка, направленная на вопрос systempuntoout. - person moraes; 10.08.2011
comment
@moraes спасибо, я знаю об этом, поэтому в данном случае я бы предложил webapp2, а не webapp. - person systempuntoout; 10.08.2011

Попробуйте использовать webapp2. Он похож на web.py, предоставляет в основном тот же набор функций и готов к работе вне App Engine. Кроме того, вы получаете превосходную совместимость с SDK и библиотеками App Engine (я объясню это лучше здесь).

Вам нужно только добавить библиотеку реляционной базы данных. Но это простой выбор: SQLAlqchemy в значительной степени является стандартом в мире Python, с большим количеством документации и процветающее сообщество.

person moraes    schedule 04.08.2011

Я бы также предложил web2py. Отличный фреймворк, отличное сообщество, готовые игры вне AppEngine. Он также поддерживает множество баз данных (SQLite, PostgreSQL, MySQL, MSSQL, FireBird, Oracle, IBM DB2, Informix, Ingres и Google App Engine).

Кроме того, его легко установить на Linux, Windows, Mac.

person Jon Romero    schedule 04.08.2011
comment
Я проверил исходный код web.py-0.37 (db.py), ibm db2 не поддерживается. Вы имеете в виду поддержку sqlalchemy в webpy? - person felix021; 01.07.2013