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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c8db80bb7349305c95abc8ff0a3669eba0c092556731d1cdeaff91aa52332cd
|
|
| MD5 |
03b39028b7a1366595d7b069cce44fbb
|
|
| BLAKE2b-256 |
4eabb0fc6be2545b57602cb78224a55942186fba5b2656616fe80c1d709983fb
|