from carrot.connection import DjangoBrokerConnection from carrot.messaging import Consumer, Publisher from django.conf import settings import load import models def send_encoder_message(msg): conn = DjangoBrokerConnection() publisher = Publisher(connection=conn, exchange="oxdb-encoder", routing_key="oxdb-encoder") publisher.send(msg) publisher.close() def run(): conn = DjangoBrokerConnection() consumer = Consumer(connection=conn, queue="oxdb-encoder", exchange="oxdb-encoder", routing_key="oxdb-encoder") def handle_background_tasks_callback(data, message): print("Got encoder message") print data if 'extract' in data: ''' update file stuff create derivates and other related stuff for a file ''' fileId = data['fileId'] f = models.File.objects.get(pk=fileId) f.extract() elif 'updateMovie' in data: ''' update movie create proxy stream and other related files extracted from movieFiles ''' movieId = data['movieId'] m = models.Movie.objects.get(pk=fileId) m.extract() message.ack() consumer.register_callback(handle_background_tasks_callback) consumer.wait() # Go into the consumer loop.