from django.dispatch import receiver from .. import models from .serializers import DeploymentSerializer import pika import json class Deployments: pass @receiver(models.deployment_change, sender=models.Deployment) def publish_deployment(sender, instance=None, created=False, **kwargs): if instance is None: return connection = pika.BlockingConnection( pika.ConnectionParameters(host='localhost')) channel = connection.channel() exchange_name = 'deployments' channel.exchange_declare(exchange=exchange_name, exchange_type='topic') message = json.dumps(DeploymentSerializer(instance).data) routing_key = 'service.' + instance.service.name channel.basic_publish(exchange=exchange_name, routing_key=routing_key, body=message) print(" [x] Sent %r:%r" % (routing_key, message)) connection.close()