Donc, je suis en train d'écrire encore un autre Tordu en fonction de démon. Il aura une xmlrpc interface comme d'habitude donc je peux facilement communiquer avec lui et à d'autres processus d'échange de données avec ce qu'il fallait.
Ce démon a besoin d'accéder à une base de données. Nous avons été à l'aide de SQL Alchimie à la place de codage en dur des chaînes SQL pour nos projets récents - ceux surtout fait pour les applications web dans des Pylônes.
Nous aimerions faire de même pour cette application et de le ré-utiliser le code de bibliothèque qui rend l'utilisation de SQL Alchimie. Alors, que faire? Bien sûr, depuis que la bibliothèque a été écrite pour une utilisation dans un Pylônes app c'est tout simple blocage de code de style que tout le monde est habitué à et tous de la non-bloquante est magiquement manipulés par des Pylônes via le filetage, filetage habitants, dont l'étendue des séances et ainsi de suite.
Alors maintenant, pour Torsadée je suppose que je suis un peu coincé. J'ai pu:
- Il suffit d'écrire le sql j'ai besoin directement si c'est minime et l'utilisation de la dbapi piscine tordus à faire runInteractions etc quand j'ai besoin de frapper à la db.
- Utiliser les objets et, en soi, le blocage des méthodes dans notre bibliothèque et de bloquer maintenant et puis dans mon Tordu démon. Bah.
- Utilisation sAsync dont la dernière mise à jour en 2008 et le type de réutiliser les modèles que nous avons déjà définies, mais pas vraiment, et cela n'a pas d'adresse que le code de la bibliothèque a besoin de travailler dans les Pylônes de trop. Le fait même de travailler avec la dernière version de SQL Alchimie? Qui sait. Ce projet avait l'air super bien, pourquoi est-il apparemment abandonné?
- Frayer un distinct sous-processus et ont à traiter avec le code de la bibliothèque et tout, c'est le blocage, les résultats étant retourné à mon démon lorsque tout est prêt, que les objets rassemblés par YAML plus de xmlrpc.
- Utilisation deferToThread puis effacer les objets retournés avoir fait en sorte de ne impatients de charges pour que j'ai toutes mes affaires que je pourrais en avoir besoin. Semble genre de uga pour moi.
Je suis également bloqué à l'aide de Python 2.5.4 atm donc pas de 2.6 encore et je ne pense pas que je peux juste faire une importation à partir d'avenir pour obtenir l'accès à la fraîcheur de la nouvelle multitraitement module trucs là. C'est OK, bien, je pense que nous avons affaire avec la communication interprocessus baisse assez bien.
Donc je penche pour l'option 4 pour la plupart, comme qui permettrait d'éviter le péché mortel de la logique de la duplication avec l'option 1, tout en restant le diable loin de threads.
Ma première tentative, mais l'option 2 pour obtenir juste la chose et puis séparer les appels à la bibliothèque de code peut-être dans un processus distinct si il semble que il ya une bonne chance que quelque chose pourrait prendre un peu trop de temps à bloquer sur. Triste. Peut-être une combinaison de Stackless Python et Tordu serait intéressant ici.
Toutes les meilleures idées?