| Thread Previous • Date Previous • Date Next • Thread Next |
Salut à tous,Le hotboot, redémarrage à chaud des modules, a été mis en place depuis quelques jours et stabilisé (en gros) depuis hier. C'est assez pratique, je dois dire, ça fait joli dans le paysage et tout.
Mais ce pose un problème assez grave : au moment du hotboot, les anciennes instances des objets à enregistrer sont pour la plupart rechargées. On se retrouve avec des instances toutes neuves, en conformité avec les classes que l'on vient de recharger. Cependant, les anciennes instances ne sont, hélas, pas détruites.
Voilà le cas classique : on recharge tous les modules, dont le module connex qui gère les comptes. Les instances des comptes sont récupérés dans des fichiers. Chaque compte contient un dictionnaire de ses joueurs. Et ces instances de joueurs sont les anciennes, pas les nouvelles. Ca pose problème pour Python et surtout pour pickle. Il a des objets dont il n'arrive pas à retrouver la classe (où plutôt dont la classe n'a pas la même signature qu'auparavant).
J'avais mis en place un système pour que chaque objet soit mis à jour à la récupération. Cependant, cette mise à jour concerne les dictionnaire des attributs. Je crois qu'il est impossible de changer l'identité d'un objet ou son type.
Autrement dit, si on veut mettre un jour les comptes, il faut réinitialiser tous les joueurs contenus dedans.
Et c'est une opération qu'il va être nécessaire de répéter des milliers de fois.
Donc (et dsl pour le message un peu long), si vous avez une idée pour automatiser cette mise à jour, faites-la parvenir. Et si ce n'est pas très clair, postez vos questions, aussi bien.
Kredh
| Thread Previous • Date Previous • Date Next • Thread Next |