2008-10-24 15 views
12

Zastanawiam się nad wdrożeniem moich własnych sesji (więcej na ćwiczenie niż cokolwiek innego) dla aplikacji GAE, którą pracuję ... na początku myślałem o używaniu datastore do przechowywania danych sesji. Jednak za każdym razem, gdy coś trzeba dodać do sesji "wiadro", wymagałoby to zapisania w magazynie danych. Oczywiście, że to źle, ponieważ chcemy zminimalizować nasze pisma. Potem pomyślałem o używaniu memcache ... wydawało mi się to dobrym pomysłem, ale potem mamy do czynienia z problemami możliwej korupcji sesji, ponieważ memcache jest "eksmitowany przez presję pamięci" przez Google. Czy to oznacza, pozostaje nam tylko z następujących opcji:Jak skutecznie wdrażać sesje w GAE?

  1. zapisywanie wszystkich danych sesji w ciasteczkach
  2. zapisaniu wszystkich danych sesji do magazynu danych i memcache, a następnie tylko odczyt z memcache

Anyone masz jakieś inne pomysły?

Odpowiedz

3

Proponuję checking out (i przyczyniając się do) te trzy implementacje sesji AppEngine przed wyrzuceniem na własną rękę:

Twoje opcje wyglądać dobrze ale wybór między nimi prawdopodobnie zależy od wielkości danych sesji w twojej aplikacji.

+1

@Alexander Kojevnikov: Wygląda AppEngine-utilities link jest uszkodzony. –

+0

@Brian: Naprawiono, dzięki! –

+2

Kolejny do rozważenia: [sesje gae] (http://wiki.github.com/dound/gae-sessions) to najszybsza i najprostsza dostępna implementacja. Porównanie dostępnych bibliotek znajduje się tutaj: http://wiki.github.com/dound/gae-sessions/comparison-with-alternative-libraries –

0

Jeśli korzystasz z web2py (wersja 1.46 lub późniejsza), sesje są domyślnie włączone w GAE. to osiągnąć za pomocą następujących trzech wierszy kodu Web2py w górnej części modelu scaffoling:

from gluon.contrib.gql import * 
db=GQLDB() 
session.connect(request,response,db=db) 

Oto działanie próbka liczy:

def index(): 
    session.c=session.c+1 if session.c else 1 
    return dict(counter=session.c)