2 votes

La bibliothèque Twisted de Python serait-elle le meilleur cas pour un modèle de type observateur ?

Je développe un système dans lequel une file d'attente sera remplie de millions d'éléments.

J'ai besoin d'un processus qui lit constamment les éléments de la file d'attente et qui envoie ensuite ces éléments aux clients enregistrés.

Je pense utiliser twisted pour cela, en ayant le lecteur de file d'attente comme un serveur twisted écoutant sur un port tcp, les clients peuvent se connecter sur ce port et quand un élément est retiré de la file d'attente, le serveur l'écrit à tous les clients.

Est-ce que ça ressemble à quelque chose pour lequel le torsadé serait idéal ? Quelqu'un connaît-il un exemple de code qui pourrait faire quelque chose de similaire ?

1voto

Jeffrey Jose Points 840

Courtier en perspective pourrait être ce que vous recherchez. Si vous ne connaissez pas PB, pensez-y comme à XML-RPC mais en bien plus. Vous pouvez invoquer des procédures à distance (duh !), passer la plupart des objets python autour juste pour en nommer deux.

Pour votre cas, ayez un PB pour les clients. Le serveur Twisted peut invoquer le doWork(myItem, myParameters) . Le serveur Twisted sera un processus persistant qui accumule les éléments dans une file d'attente. Si vous avez des millions (ou même des dizaines de serveurs) d'éléments, pensez à la récupération gracieuse en cas de panne. Que diriez-vous de sauvegarder intelligemment vos données sur le disque de temps en temps et de les lire au démarrage ?

1voto

Rob Cowie Points 10471

Vous pourriez envisager RabbitMQ un courtier en messages AMQP. AMQP est un protocole conçu pour construire des systèmes de mise en file d'attente et de routage de messages.

Il y a plusieurs , python , clients pour la connexion aux brokers AMQP.

0voto

Ben Hughes Points 1220

Twisted et PB seraient parfaits pour cela - il y a un tas de bonnes références sur Stack :

Python twisted : par où commencer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X