2011-08-05 7 views
3

Je souhaite écrire un modèle de données personnalisé pour mon application Web qui existe dans la mémoire en tant que collection d'objets python personnalisés. L'application Web peut manipuler des données sur ces objets et exécuter leurs méthodes sur les demandes des utilisateurs, et après qu'une thread de demande meurt, les objets restent en mémoire.Stockage persistant en mémoire en Python

Les objets du modèle auraient des méthodes pour écrire eux-mêmes sur le disque (je ne sais pas encore comment je vais le faire mais ce n'est pas ce qui m'intéresse ici), mais uniquement à des fins de sauvegarde. Idéalement, ils resteront dans la mémoire tant que le serveur fonctionne.

L'accès au modèle devrait être géré par une session dans le cas où plusieurs utilisateurs de manipuler des données sur les objets en même temps, bien que cet événement sera relativement rare.

Il n'est pas possible d'initialiser les objets avec l'application Web, car ils doivent persister même lors d'une réinitialisation de l'application Web. Y a-t-il des composants tiers qui faciliteraient la configuration de ce type de modèle? Des conseils pour suivre ce chemin? Toute aide serait appréciée, car je n'ai pas beaucoup d'expérience avec la programmation des processus indépendants pour communiquer en python ou autrement.

Mon serveur sera Linux et je prévois d'utiliser Pyramid comme framework pour l'application web.

Merci à l'avance, Will

Répondre

2

Je pense que cela dépend surtout de la quantité de travail que vous voulez mettre dans ce qui ressemble à la construction de votre propre ORM.

Si vous vous sentez à la hauteur de la sérialisation de vos objets python, et en fonction de la complexité de vos modèles, vous pouvez donner une chance au Redis.

Redis est une base de données non relationnelle, basée sur un modèle de valeur-clé. Toutes vos données sont stockées dans la mémoire, et est périodiquement (fréquence dépend du nombre d'écritures et est personnalisable) déversé sur le disque. C'est aussi très facile à prendre et à utiliser.

Il existe un wrapper autour de redis disponible pour python: redis_py.

Bien sûr, Redis n'est pas le seul de son genre, et vous pouvez aussi regarder d'autres solutions similaires, telles que Tokyo Tyrant.

Questions connexes