Skip to content
Thomas Recouvreux edited this page Sep 20, 2013 · 14 revisions

architecture.jpg

Api reference

api reference

Installation

avec un virtualenv (recommandé)

virtualenv -p python3 env # création du virtualenv
source env/bin/activate
pip install pyzmq --install-option="--zmq=bundled"

dans l'environnement global (déconseillé)

apt-get install python3-zmq

python

Ensuite il suffit juste de renseigner le chemin vers le dossier contenant zerobot ($DIR_REPO/python3/).

Il est possible d'installer le module zerobot dans l'environement global python3 avec quelque chose du style (non testé xD, bossez qvec des virtualenv) :

pip-3 install -e ./python3/

Structure des messages

Les messages sont en json.

Requete

{
  uid: "98e0ee46-13d2-11e2-93a2-0016ea56a3a8",
  fct: "ping",
  args: [  // paramètres positionnels
    56
  ],
  kwargs: {} // paramètres nommés
}

Reponse

{
  uid: "98e0ee46-13d2-11e2-93a2-0016ea56a3a8",
  data: 98,
  error: null,
}

Les scripts python

Actuellement tous les scripts doivent être lancés depuis le dossier python3/scripts. Chaque script dispose d'un aide, pour cela il suffit de fournir l'option -h.

Serveur

Lancement

./server.py

Lancement avec options

./server --frontend tcp://*:8000 --backend tcp://*8001 --publish tcp://*:8002

Ping

Le script ping.py sert tester qu'un service répond. Par default il effectue la commande ping, mais il est possible de demander une autre methode et de passer des parametres.

Lancement

./ping.py --remote-id <id du service>

Options

./ping.py --connect tcp://localhost:8000 --remote-id <id du service> -f une_fonction -args '[1,2,3]'

Les arguments doivent être passer en sous forme de liste pythonique.

Log

Le script log.py permet de voir les logs en directe.

Lancement

./log.py

Avec un lancement classique tous les logs sont visibles, il est possible de ne voir que les messages envoyés par certains clients.

Filtre

Souscrire uniquement aux messqges envoyés pqr service1 et service2 :

./log.py --subscribe service1,service2

Il est aussi possible d'utiliser grep, par example pour n'avoir que les messages dirigés vers le client1 :

./log.py | grep 'To : client1'

Console

La console permet de faire des requêtes a un service en ligne de commande. Actuellement la console n'est rien d'autre qu'un interpreter python.

Lancement

./console --remote-id <id du service>

Example d'utilisation

>>> client.ping(56)
98
>>> client.help()
affiche les methodes du client
>>> client.help('ping')
affiche la doc de la fonction ping
>>> for i in range(3):
...     client.ping(42)
...
84
84
84
>>>

Simple Time Service

Le script implémente un service basique : ping et time. Cela permet de tester l'architecture.