Как свалить с платформы Google App Engine

Логотип Google App Engine

Примерно с 17 февраля 2011 года гугл без предупреждения стал блокировать доступ к сайтам на платформе GAE. Причем блокировались IP адреса из Германии, Канады, США и многих других “правильных” стран. Прошло 3 месяца, а воз и ныне там, что-либо менять они не собираются.

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

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

Забрать дамп базы можно так:

./bulkloader.py –dump –app_id=your-app-id –url=http://your-app-id .appspot.com/remote_api –filename=dump.sql3

Дальше надо бы перенести данные на новую CMS, или на худой конец, согнать данные в статику.

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

Получить статику можно, натравив на сайт обычный wget с рекурсией; но при невысокой скорости интернета этот процесс может затянуться. Поэтому будет рационально развернуть скачанный дамп на локальной машине, и натравить wget на localhost.

Сначала стартуем свое приложение:
./dev_appserver.py your-app-id
В другой консоли разворачиваем скачанный дамп, используя remote api:
./bulkloader.py –restore –app_id=your-app-id –url=http://127.0.0.1:8080/remote_api –filename=dump.sql3
Используем wget для получения статических файлов HTML:
wget -r http://localhost:8080

Все, теперь у нас есть куча статики, которую можно использовать.

Не исключено, что гугл все-таки одумается, и снимет блокировки айпи адресов на своей стороне. Поэтому окончательно отказываться от GAE я бы не стал, пока что есть возможность поддерживать CMS на локальной машине.

Однако неожиданно выяснилось, что так же просто забрать данные с локальной машины и залить их в гугловский GAE не получится. При попытке скачать dump с локальной машины в один файл, bulk_uploader ругается примерно так:

[ERROR ] Unable to download kind stats for all-kinds download.
[ERROR ] Kind stats are generated periodically by the appserver
[ERROR ] Kind stats are not available on dev_appserver.

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

./bulkloader.py –dump –app_id=your-app-id –kind=table1 –url=http://127.0.0.1:8080/remote_api –filename=table1.sql3

./bulkloader.py –dump –app_id= your-app-id –kind=table2 –url=http://127.0.0.1:8080/remote_api –filename=table2.sql3

Сохраненные таким образом дампы таблиц без проблем заливаются по очереди на Google App Engine.

Оставить комментарий

Почта (не публикуется) Обязательные поля помечены *

*

Вы можете использовать эти HTML теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>