Contesto: Sto sviluppando un'applicazione web utilizzando webapp2 web-framework con python da ospitare su GAE.
L'applicazione web ( web-app d'ora in poi) è una variante degli scacchi. Essendo un primo timer, ho sicuramente fatto un sacco di errori di progettazione. Uno di questi è quello a cui si riferisce questa domanda, ci arriverò tra poco.
Lo scopo della web-app era di consentire a un numero piuttosto elevato di giocatori di giocare a scacchi a 2 giocatori, in modo che più giochi fossero eseguiti in parallelo. Pur non superando la quota gratuita su GAE. ( I am a student ).
Per farlo, ho pensato di creare un nuovo oggetto di gioco e di memorizzare il id(game_object) insieme al machine_id dei due giocatori che giocavano su quell'istanza, nel datastore.
Quando interrogando il datastore con machine_id di un giocatore, potrei ottenere un valore id() , e pensavo potessi usare quel valore come key in un dizionario in cui un riferimento al game_object costituisce il valore.
Facendo questo, non ho bisogno che scriva / aggiorni il datastore, risparmiando così sulle preziose scritture. Potrei facilmente modificare lo stato di gioco di game_object , e potrebbe essere ancora referenziato da id() .
Ma ora quello che succede è che funziona bene per alcune mosse. Successivamente viene eseguita la garbage collection e il game_object viene cancellato dalla memoria. Sollevare un'eccezione NameError.
La mia domanda è, può essere risolto creando nuovi oggetti di gioco in un modulo separato in cui la garbage collection è disattivata e quindi periodicamente / innescata da un evento che libera la memoria? Altrimenti? Come posso risolvere questo problema?