Skip to main content

No project description provided

Project description

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 ici https://github.com/vitorluis/python-mercure

Installation de la bibliothèque

La bibliothèque est disponible sur PyPi, vous pouvez donc l'installer en utilisant pip :

 pip3 install pymcure

Publication des messages

Comme 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 Synchrone

import json
from pymcure.client.publisher.sync import SyncPublisher
from pymcure.client.message import Message

data = 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 paramettre

mercure_hub

Le lien du hub mercure

mercure_jwt

Le token JWT pour s'authentifier sur le hub. Si vous ne voulez pas generer vous même votre token donner la valeur None et definissez les paramettres suivant

secret

Je mot secret utilisé pour demarrer le hub

payload

Le payload est defini par defaut, mais vous pouvez definir le votre

definition par defaut

PAYLOAD = {
    "mercure": {
        "subscribe": [
        ],
        "publish": [
        ]
    }
}

header

Le header est definir par defaut, mais vous pouvez definir le votre

definition par defaut

HEADER = {
    "typ": "JWT",
    "alg": "HS256"
}

Publication des messages Asynchrone

import json
from pymcure.client.publisher.asynch import AsyncPublisher
from pymcure.client.message import Message

data = 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 messages

Pour 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:

from pymcure.client.consumer import Consumer

def callback(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.

BONUS

Pour demarrer le hub mercure il faut soit:

Docker

Mode demo

docker run -e JWT_KEY='!ChangeMe!' -e DEMO=1 -e ALLOW_ANONYMOUS=1 -e CORS_ALLOWED_ORIGINS=* -e PUBLISH_ALLOWED_ORIGINS='*' -p 80:80 dunglas/mercure

Mode prod

docker run \
    -e JWT_KEY='!ChangeMe!' -e ACME_HOSTS='*' \
    -p 80:80 -p 443:443 \
    dunglas/mercure

Binaire

Téléchargez le binaire qui convient à votre système ici https://github.com/dunglas/mercure/releases Se déplacer dans le repertoire et executer le binaire avec les paramettre suivant

JWT_KEY='your.secrer.phrase' ADDR=:3000 DEMO=1 ALLOW_ANONYMOUS=1 PUBLISH_ALLOWED_ORIGINS='*' CORS_ALLOWED_ORIGINS='*' ./mercure

Crédits

Créé et maintenu par Vianney ADOU adoujmv@gmail.com

Python Mercure (pymcure) [English]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymcure-0.0.1.1.3.tar.gz (8.7 kB view details)

Uploaded Source

File details

Details for the file pymcure-0.0.1.1.3.tar.gz.

File metadata

  • Download URL: pymcure-0.0.1.1.3.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.4

File hashes

Hashes for pymcure-0.0.1.1.3.tar.gz
Algorithm Hash digest
SHA256 3c8db80bb7349305c95abc8ff0a3669eba0c092556731d1cdeaff91aa52332cd
MD5 03b39028b7a1366595d7b069cce44fbb
BLAKE2b-256 4eabb0fc6be2545b57602cb78224a55942186fba5b2656616fe80c1d709983fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page