Des Lapins et des Poneys Quand AMQP rencontre Django http://www.flickr.com/photos/stuckincustoms/431377484/
Olivier Meunier 9 ans PHP Dotclear Développeur web / Celeonet.fr Python et Django depuis un an
asynchrone Une commande, pas de réponse immédiate Des solutions : Jabber, Multiprocessing, AMQP http://www.flickr.com/photos/gruzuk/523650561/
Serveur Web Ajouter un hôte Ajouter un alias Serveur Mail Données Supprimer un compte Serveur FTP Commander un domaine Passerelle Domaines
Besoins Envoyer des commandes Ne pas attendre de réponse immédiate Fire and forget Multiprocessing XMPP STOMP SMTP (wtf?)
AMQP Advanced Message Queueing Protocol Point à point Orienté message Files d attente Interopérable http://www.flickr.com/photos/sigmadelta/2256749141/
déclare Applications Server (Broker) Clients Consumer Publisher Exchange Queue Consumer Publisher Exchange Queue Consumer Envoie un message en déclarant : Exchange Routing key Déclare : Queue Exchange S'abonne à : Queue Exchange Routing key
RabbitMQ http://www.rabbitmq.com/ Erlang Aucune configuration rabbitmq-server
amqplib http://barryp.org/software/ AMQP 0.8 Autres clients Python txamqp (twisted) Carrot Celery
Cas concret Commander des noms de domaines EPP et XML/RPC Asynchrone Modèles django Commandes django http://thereifixedit.com/2010/04/06/epic-kludge-photopipe-dreams-always-run-into-knots/
Du code, du code class Operation(WithDates): STATUS_PENDING = 0 STATUS_SENT = 1 STATUS_DONE = 2 STATUS_ERROR = -1 STATUSES = ( (STATUS_PENDING, 'pending'), (STATUS_SENT, 'sent'), (STATUS_DONE, 'done'), (STATUS_ERROR, 'error'), ) status = models.integerfield(null=false, choices=statuses, default=0) queue = models.charfield(max_length=80) cmd = models.charfield(max_length=80) args = JSONField() msg = models.textfield(null=true) objects = OperationsManager()./manage.py operations_daemon
Bonaldi!
Le fabuleux monde des noms de domaine Un standard : EPP Des variantes pour chaque registre Une interface XML/RPC pour certaines extensions gérées par Gandi Synchrone ou asynchrone
Afnic Opérations Agent opérations domaines dns.be RabbitMQ Gandi Domaines
Créer django.fr Afnic Opérations Agent opérations domaines dns.be RabbitMQ Gandi Domaines
Créer django.fr Afnic Opérations Agent opérations domaines dns.be RabbitMQ Gandi Domaines
Créer django.fr Afnic Opérations Agent opérations domaines dns.be RabbitMQ Gandi Domaines
Créer django.fr Afnic Opérations Agent opérations domains domaines dns.be RabbitMQ Gandi Domaines
Créer django.fr Afnic Opérations Agent opérations domains domaines dns.be RabbitMQ Gandi Domaines
Créer django.fr Afnic Opérations Agent opérations domains domaines dns.be RabbitMQ Gandi Domaines
Créer django.fr Afnic Opérations Agent opérations domains domaines dns.be RabbitMQ Gandi Domaines
Créer django.fr Afnic Opérations Agent opérations domains domaines dns.be RabbitMQ Gandi Domaines
Merci! http://neokraft.net/ olivier@neokraft.net