Package: pymcure
Python Mercure (pymcure) [Français]L'objectif de cette bibliothèque est de fournir un moyen rapide de publier et de consommer des messages sur Mercure.
Si vous ne savez pas ce qu'est Mercure, jetez un coup d'œil ici: (https://github.com/dunglas/mercure).Cette bibliothèque est actuellement en cours de développement,
donc si vous trouvez un bogue ou une chance d'amélioration, veuillez nous en faire part. :)Nous nous sommes inspirés de la bibliotheque pymercure créée et maintenue par Vitor Villar (Salut Vitor :) ) qui est consultable icihttps://github.com/vitorluis/python-mercureInstallation de la bibliothèqueLa bibliothèque est disponible sur PyPi, vous pouvez donc l'installer en utilisant pip :pip3 install pymcurePublication des messagesComme mentionné précédemment, l'objectif est de fournir un moyen rapide de publier des messages.
Et pour ce faire, il a fourni les classes Sync et Async.Publication des messages Synchroneimportjsonfrompymcure.client.publisher.syncimportSyncPublisherfrompymcure.client.messageimportMessagedata=json.dumps({'status':'test'})msg=Message(['mytopicname'],data)publisher=SyncPublisher(mercure_hub='http://127.0.0.1:3000/.well-known/mercure',mercure_jwt=None,secret='your.secret.phrase')publisher.publish(msg)La classe SyncPublisher a pour paramettremercure_hubLe lien du hub mercuremercure_jwtLe token JWT pour s'authentifier sur le hub. Si vous ne voulez pas generer vous même votre token donner la valeurNoneet definissez les paramettres suivantsecretJe mot secret utilisé pour demarrer le hubpayloadLe payload est defini par defaut, mais vous pouvez definir le votredefinition par defautPAYLOAD={"mercure":{"subscribe":[],"publish":[]}}headerLe header est definir par defaut, mais vous pouvez definir le votredefinition par defautHEADER={"typ":"JWT","alg":"HS256"}Publication des messages Asynchroneimportjsonfrompymcure.client.publisher.asynchimportAsyncPublisherfrompymcure.client.messageimportMessagedata=json.dumps({'status':'test'})msg=Message(['mytopicname'],data)publisher=AsyncPublisher('http://127.0.0.1:3000/.well-known/mercure','your.Token.Here')publisher.publish(msg)Dans le cas d'une asynchronisation, la demande sera faite en utilisant la bibliothèque de gevent.Consommation de messagesPour consommer des messages, c'est aussi assez simple. car le consommateur court dans un nouveau fil
vous n'avez pas à vous en préoccuper, il vous suffit de lui passer une fonction de rappel:frompymcure.client.consumerimportConsumerdefcallback(message):print(message.data)c=Consumer('http://127.0.0.1:3000/.well-known/mercure',['mytopicname'],callback)c.start_consumption()Lors de votre rappel, vous recevrez toujours l'objet "Message", avec les données et les métadonnées du message.BONUSPour demarrer le hub mercure il faut soit:DockerMode demodockerrun-eJWT_KEY='!ChangeMe!'-eDEMO=1-eALLOW_ANONYMOUS=1-eCORS_ALLOWED_ORIGINS=*-ePUBLISH_ALLOWED_ORIGINS='*'-p80:80dunglas/mercureMode proddockerrun\-eJWT_KEY='!ChangeMe!'-eACME_HOSTS='*'\-p80:80-p443:443\dunglas/mercureBinaireTéléchargez le binaire qui convient à votre système icihttps://github.com/dunglas/mercure/releasesSe déplacer dans le repertoire et executer le binaire avec les paramettre suivantJWT_KEY='your.secrer.phrase'ADDR=:3000DEMO=1ALLOW_ANONYMOUS=1PUBLISH_ALLOWED_ORIGINS='*'CORS_ALLOWED_ORIGINS='*'./mercureCréditsCréé et maintenu par Vianney ADOUadoujmv@gmail.comPython Mercure (pymcure) [English]