Web900 se devant de devenir multi-utilisateur, il fallut lui chercher un moyen de persistance plus robuste que le système de fichier et qui sache gérer la concurrence: une base de données. Sqlite3 est une base de données in-process qui simplifie le paramétrage puisqu’il n’y a pas de client-serveur.
L’utilisation conjointe de mod_python et de sqlite3 nécessite néanmoins quelques précautions. En effet, si sqlite est sans danger dans un programme mono-process, il n’en va pas de même avec mod_python où chaque worker de apache est un processus ayant chacun son espace mémoire pour python. Cela implique de ne pas utiliser le mode in-memory de sqlite (:memory:) et oblige à passer par une base physique sur le disque.
La gestion des redirections par mod_python doit également susciter une attention particulière. Dans le monde Java, une servlet peut transmettre une requèete à un autre composant web (servlet ou jsp) qui recoit alors l’intégralité de la requête initiale plus ce que y aurait mis la servlet initiale. Avec mod_python, cela ne marche pas comme ça. Si le mécanisme de redirection peut être interne, une nouvelle requête est créée donc on ne peut pas enrichir l’objet requête pour la passer au traitement suivant. Heureusement que mod_python fournit dans l’objet requête au pointeur sur la requête initiale. Cela fait tout de même un petit travail supplémentaire.
Tags: Mod_python Sqlite