2010-06-08 3 views
2

Je développe un système où une file d'attente sera remplie avec des millions d'articlesLa bibliothèque Twisted de Python serait-elle la meilleure pour un modèle de type observateur?

J'ai besoin d'un processus qui lit constamment les éléments de la file d'attente et envoie ces éléments aux clients enregistrés. Je pense utiliser Twisted pour cela, avoir le lecteur de file d'attente être un serveur tordu écoute sur un port TCP, puis 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.

Cela ressemble-t-il à quelque chose de tordu qui serait idéal? Quelqu'un connaît-il un exemple de code qui pourrait faire quelque chose de similaire?

Répondre

1

Perspective Broker peut être ce que vous cherchez. Si vous ne connaissez pas PB, pensez-y comme XML-RPC mais beaucoup plus. Vous pouvez appeler des procédures distantes (duh!), Passer la plupart des objets python juste pour en nommer deux.

Pour votre cas, ayez un PB pour les clients. Twisted Server peut appeler la télécommande doWork(myItem, myParameters). Le serveur Twisted sera un processus persistant qui accumule des éléments dans une file d'attente. Si vous avez des millions (ou même des dizaines de serveurs), gardez à l'esprit de récupérer gracieusement en cas de crash. Que diriez-vous de soutenir intelligemment des choses sur le disque de temps en temps et de lire ceci au démarrage?

+0

Salut Jeff, le serveur Twisted va effectivement retirer des choses d'une file d'attente persistante comme beanstalkd. Je vais jeter un coup d'œil au courtier de perspective, merci! – James

1

Vous pourriez envisager RabbitMQ, un courtier de messages AMQP. AMQP est un protocole conçu pour construire des systèmes de messagerie et de routage de messagerie.

Il existe several, python, clients pour la connexion aux courtiers AMQP.

Questions connexes