This is becoming a larger project (by my standards), so I apologize in advance to those trying to help. I am an amateur making my first substantial web app. I'm learning a ton from this project!
I am using python, flask, and shelve to save user data as they respond in the various web forms. That data is saved using shelve and later processed and used to change the various user information (class attributes like person.cash) when I run the "Next Turn" function/route.
The app is kind of like a more realistic version of the turn based game 'Life'. The app works well (so far) and I'm working to improve it and use it in my classroom as a financial literacy tool. Definitely learning a lot of ways to organize and make things more efficient.
My problem is that whenever I wake the app from repl sleep (this problem does NOT occur in any other instance) I suddenly cannot pull the class instance data correctly from my shelve file (gamedata). Specifically, some of my attributes are accessible after I load it from shelve, but some raise an AttributeError. It's as if half of my class instance data was lost. In one repl "session" this problem does NOT occur. I can take a hundred turns in a row and the app handles the data properly. But if I wait a few hours and come back, the app will not run without me resetting the game and starting from the beginning.
I am not sure if the problem is in the logic/syntax of my code (my method of saving and loading from gamedata), my understanding of shelve and its limitations, my understanding of replit and its limitations, or something else. It's difficult to troubleshoot as I have to wait for the repl to fall asleep before my trial and error attempts.
Thanks in advance for any help!
@ArchieMaclean Thanks for the quick response and the details behind the repl sleep. Could you explain to me how the sleep affects my game data? I use shelve to store the game data into a file (like a text file). Shouldn't that persist beyond the sleep? And why does only a quarter of my data persist?
Thanks for your time.