Migracja aplikacji na Google App Engine do nowego High Replication Datastore
Google jakiś czas temu ogłosiło zmiany na platformie GAE - aplikacje Datastore master/slave zostaną wyłączone 6 lipca 2015. Wszystkie stare aplikacje należy zmigrować do nowego typu aplikacji z High Replication Datastore
. Proces migracji jest prosty, choć może nieco różnić się dla każdej aplikacji.
Aktualizacja aplikacji do HRD
Dostępny jest szczegółowy przewodnik migracji. W skrócie musimy utworzyć nową aplikację na Google App Engine wybierając HRD. Następnie wrzucamy na nią kod migrowanej aplikacji. Gdy to się uda wchodzimy do ustawień starej aplikacji i wyszukujemy Migration tool
, gdzie możemy wybrać docelową aplikację HRD i rozpocząć proces migracji. Gdy dobiegnie on końca stary adres na appspot.com będzie aliasem do nowej aplikacji HRD.
Przy wrzucaniu kodu do nowej aplikacji można dokonać innych aktualizacji zalecanych przez Google. Ja miałem dwie proste aplikacje wykorzystujące webapp i Pythona 2.5. Przy przechodzeniu na HRD zyskujemy dostęp do Pythona 2.7 i nowych wersji bibliotek, w tym webapp2. Zmian jest nieco więcej. W moim przypadku zmian było kilka:
- W app.yaml wybrać Pythona 2.7:
runtime: python27
. Trzeba też dodaćthreadsafe: true
- Webapp2 ma też nieco inną konfigurację. Jeżeli wcześniej mieliśmy pod główny URL podpięte widoki w pliku
views.py
to teraz trzeba tam wstawić nazwę aplikacji -views.app
- Do obsługi szablonów w webapp2 dostępnych jest kilka bibliotek, najprościej przy migracji użyć jinja. Żeby to było możliwe do app.yaml dodajemy konfigurację:
libraries:
- name: webapp2
version: latest
- name: jinja2
version: latest
# -*- coding: utf-8 -*-
import os
import jinja2
import webapp2
JINJA_ENVIRONMENT = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
extensions=['jinja2.ext.autoescape'],
autoescape=True)
class MainPage(webapp2.RequestHandler):
def get(self):
template = JINJA_ENVIRONMENT.get_template('templates/main_page.html')
self.response.write(template.render({}))
app = webapp2.WSGIApplication([
('/', MainPage),
], debug=True)
Dla webapp2 dostępny jest tutorial na stronach dokumentacji Google App Engine. Na końcu oczywiście wyłączamy debug... W efekcie migracji możemy cieszyć się z działającej aplikacji działającej na najnowszych komponentach, np. pythonmore.appspot.com ;)
Comment article