Как асинхронно запустить задачу 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 в папку приложения, но он, похоже, не запускается вместе с сервером. Он вообще не связан с проектом.