Ho seguito molte esercitazioni di Google App Engine e sono diventato abbastanza familiare su come eseguire attività di base come l'implementazione di webapp2.RequestHandler
e l'utilizzo di ndb.Models
per gestire i dati.
Ora, ho raggiunto un muro con alcuni piccoli concetti che mancavano dalle risorse in cui sono andato, o semplicemente mi mancavano. Quindi, eccoli qui:
Che cosa succede alle variabili di classe?
Per quanto ho capito, una volta impostata la mia app su thread-safe, è in grado di gestire più richieste contemporaneamente, per non parlare eventualmente di macchine diverse. Significa che semplicemente non posso usare le variabili di classe (che possono essere modificate in qualsiasi momento)?
Come modellare una logica a livello di applicazione?
È molto semplice scrivere la logica associata alle richieste. Non devo preoccuparmi del blocco o di una di queste cose, dal momento che un nuovo RequestHandler viene istanziato per ogni richiesta. Che dire della logica a livello di applicazione? Ad esempio, se avessi un modulo python chiamato "Game", e dopo averlo importato, faccio qualcosa del tipo:
Game.matchmaking_queue.append(player)
Per quanto ne so, c'è solo un'istanza Game
, e ha una variabile di istanza a cui si accede dalla logica RequestHandler
. Andrà bene? Devo rendere il matchmaking_queue
supportato su memcache e / o datastore in modo che tutte richiedano di vederlo? Devo fare qualsiasi magia thread-safe su Game
?