2017-10-20 15 views
0

Utilisation de Python websocket-client avec multiprocessing.Pool Je suis capable de générer 3 instances du client websocket avec chacune connectée à une URL différente et d'écrire les données dans 3 dictionnaires séparés.Utilisation de Python websocket-client multi-thread

Mon but est d'avoir un 4ème processus en cours qui serait capable de lire les données des 3 dictionnaires à mesure qu'ils sont mis à jour.

Quelle est la meilleure façon de partager des données entre ces processus?

Je l'ai regardé le multiprocessing examples mais parce qu'un websocket.WebSocketApp prend un paramètre qui comprend un nom de fonction à appeler (ON_MESSAGE) et il n'accepte pas les paramètres personnalisés supplémentaires, je ne suis pas clair que les fonctions ON_MESSAGE seraient en mesure pour être passé une instance d'un Value ou Pipe, etc

Répondre

0

Multiprocessesing ne partage pas de données, de sorte que vous auriez à utiliser une base de données de quelque sorte. J'utilise gevent et la bibliothèque gevent-websocket.

https://pypi.python.org/pypi/gevent-websocket/

Vous avez deux options, il vous suffit de courir autant que vous voulez de manière asynchrone, ou vous pouvez utiliser le module GIPC qui multiprocesses en fait gevent pour vous avec l'avantage supplémentaire d'être en mesure de parler les uns aux autres par lire des tuyaux d'écriture.

https://gehrcke.de/gipc/