Сельдерей: полезности для здоровья и кулинарных шедевров
Celery - это библиотека, предоставляющая возможность асинхронного выполнения задач в фоновом режиме с поддержкой распределенных очередей сообщений. Это означает, что задачи (такие как отправка электронных писем, генерация отчетов и т. д.) могут быть переданы на обработку в фоновом режиме, в отдельном процессе или даже на другом сервере, что позволяет основному приложению продолжать работу без прерывания.
Celery использует архитектуру "producer-consumer", где приложение-производитель помещает задачи в очередь, а приложение-потребитель обрабатывает эти задачи и возвращает результаты. Очередь используется для хранения задач, которые должны быть выполнены; Celery использует различные брокеры сообщений для этого, такие как RabbitMQ, Redis или Amazon SQS.
Примеры использования celery:
1. Отправка почтовых сообщений:
from celery import Celery
from django.core.mail import send_mail
app = Celery('tasks', broker='redis://localhost:6379')
@app.task
def send_email(subject, message, from_email, recipient_list):
send_mail(subject, message, from_email, recipient_list)
2. Генерация отчетов:
from celery import Celery
from reportlab.pdfgen import canvas
app = Celery('tasks', broker='redis://localhost:6379')
@app.task
def generate_report(file_path):
c = canvas.Canvas(file_path)
c.drawString(100,750,"Welcome to Reportlab!")
c.save()
3. Изображение масштабирования:
from celery import Celery
from PIL import Image
app = Celery('tasks', broker='redis://localhost:6379')
@app.task
def resize_image(file_path):
img = Image.open(file_path)
img = img.resize((640, 480), Image.ANTIALIAS)
img.save(file_path)
Все перечисленные примеры показывают, как задачи могут быть созданы с помощью celery и переданы для обработки в фоновом режиме. Celery делает асинхронную обработку задач очень простой, и может быть использована для решения различных задач в различных приложениях.