Как асинхронно запустить задачу rabbitMQ в django rest framework

Я написал два скрипта на python, отдельно от моего проекта django, чтобы помещать сообщения в очередь rabbitMQ и забирать из нее. Вот мой сценарий производителя, который считывает некоторые значения датчиков из файла и каждую секунду помещает значение в очередь:

import pika, csv, time

url = 'secret_queue_url'
params = pika.URLParameters(url)
connection = pika.BlockingConnection(params)
channel = connection.channel()
channel.queue_declare(queue='hello')

with open('sensor.csv', newline='') as csvfile:
    reader = csv.reader(csvfile, delimiter='\n')
    for row in reader:
        channel.basic_publish(exchange='', routing_key='hello', body=row[0])
        print(row[0])
        time.sleep(1)


connection.close()

А это мой потребительский скрипт:

import pika
from app.models import Measurement

url = 'secret_queue_url'
params = pika.URLParameters(url)
connection = pika.BlockingConnection(params)
channel = connection.channel()
channel.queue_declare(queue='hello')

def callback(ch, method, properties, body):
    measurement = Measurement.objects.create(sensor=3, energy_consumption=float(str(body)))
    measurement.save()

channel.basic_consume('hello',
                      callback,
                      auto_ack=True)

channel.start_consuming()
connection.close()

Measurement - это модель внутри моего проекта django. Как я уже сказал, эти два файла не включены в структуру моего проекта, но я изменил свой скрипт потребителя, чтобы вставлять новое измерение каждый раз, когда значение считывается из очереди. Я хочу интегрировать скрипт потребителя в мой проект django, чтобы он создавал новое измерение каждый раз, когда в очереди что-то есть, и я хочу, чтобы этот скрипт запускался асинхронно, как только запускается мой сервер django. Как я могу это сделать? Прежде всего, я попытался поместить свой consumer.py в папку приложения, но он, похоже, не запускается вместе с сервером. Он вообще не связан с проектом.

Вернуться на верх