Je suis en train de concevoir une interface Web pour une certaine appliance matérielle qui fournit sa propre API personnalisée. Ladite interface web peut gérer plusieurs appareils à la fois. Les données sont récupérées à partir de l'appliance via l'interrogation avec l'API personnalisée. Il est donc préférable de la rendre asynchrone. La chose la plus évidente est d'avoir un thread d'interrogation qui interroge les données, les enregistre dans un singleton de processus complet avec des sémaphores, puis les threads du serveur web récupèrent les données de ce singleton et les affichent. Je ne suis pas un grand fan des singletons ou des conceptions mixtes, donc je pensais à séparer la source de données poller du serveur web, en la bouclant sur l'interface locale et en utilisant quelque chose comme XML-RPC pour consommer des données. L'application n'a pas besoin d'être vraiment «entreprise» ou évolutive, car elle sera accessible au maximum par deux personnes à la fois, mais je préfère la rendre robuste en ne mélangeant pas deux types de logique. Il y a une implémentation actuelle en python utilisant CherryPy et c'est le plus grand méli-mélo de conception terrible que j'ai jamais vu. Je pense que si je vais avec le design le plus évident je finirai par réimplémenter la même chose horrible à ma façon.Modèle de conception pour plusieurs consommateurs et une seule source de données
4
A
Répondre
4
Si vous utilisez Django et celery, vous pouvez créer un projet Django pour être l'interface Web et un travail de céleri à exécuter en arrière-plan et interroger. Dans ce travail, vous pouvez importer vos modèles Django afin de pouvoir enregistrer les résultats de l'interrogation très simplement.
+0
céleri ressemble à la solution de haut niveau mon problème, merci beaucoup :) – Novikov
"une seule source de données"! = "Peut gérer plusieurs appareils" – katrielalex
Pour moi, cela n'a pas d'importance puisque chaque consommateur va regarder toutes les données dans leur ensemble. Un peu comme si vous mettez en place un cluster de partage rien de RDMBS c'est toujours une seule source de données. – Novikov