Налаштування черги завдань за допомогою Celery та RabbitMQ в Django

pic

Встановлення Rabbit MQ

  1. для Windows:

Завантажте з RabbitMQ.com → Запустіть інсталятор.

  1. для Linux/Debian
# Оновіть пакунки  
sudo apt update  

# Встановіть RabbitMQ  
sudo apt install -y rabbitmq-server  

# Запустіть RabbitMQ  
sudo systemctl start rabbitmq-server
  1. за допомогою Docker
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management
  • Для доступу до панелі керування перейдіть за адресою http://localhost:15672 (логін: guest/guest).

Встановлення Celery

pip install celery

Налаштування Django

  1. У вашій папці проекту, де знаходиться settings.py, створіть файл celery.py і додайте до нього наступний код:
import os  
from celery import Celery  

# Встановіть модуль налаштувань Django  
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectcore.settings')  

app = Celery('projectcore') # змініть projectcore на ім'я вашого проекту  
app.config_from_object('django.conf:settings', namespace='CELERY')  
app.autodiscover_tasks() # щоб всі завдання автоматично виявлялись
  1. Змініть ваш **init.py**
from .celery import app as celery_app  

__all__ = ('celery_app',)
  1. Змініть ваш Settings.py
CELERY_BROKER_CONNECTION_RETRY_ON_STARTUP = True  
CELERY_BROKER_URL = 'amqp://guest:guest@localhost:5672'
  1. Додати tasks.py в ваш додаток
from celery import shared_task  

@shared_task  
def test_task():  
 print("!!! Celery працює! Завдання виконано успішно !!!")  
 return "Успіх"

Запуск Celery і Rabbit MQ

celery -A projectcore worker --loglevel=info --pool=solo

змініть projectcore на ім'я вашого додатка

Тестування налаштувань

Запустіть у терміналі

py manage.py bash  

from myapp.tasks import test_tasks  
test_tasks.delay()

Ви повинні побачити «Успіх» у журналі Celery.

Висновок:

Якщо вам сподобалася ця стаття та була корисною, будь ласка, поставте лайк і підпишіться, щоб отримувати більше таких матеріалів. Я з радістю почую ваші коментарі та досвід роботи з Django і RabbitMQ, не соромтеся поділитися ними нижче для подальшого обговорення.

Перекладено з: Setting Up a task Queue using Celery and RabbitMQ WITH DJANGO

Leave a Reply

Your email address will not be published. Required fields are marked *