Ninja Learn | نینجا لرن
1.25K subscribers
96 photos
36 videos
11 files
307 links
یادگیری برنامه نویسی به سبک نینجا 🥷
اینجا چیزایی یاد میگیری که فقط نینجاهای وب‌ بلدن 🤫

📄 Send me post: https://t.me/NoronChat_bot?start=sec-fdggghgebe

👥 ɢʀᴏᴜᴘ: https://t.me/+td1EcO_YfSphNTlk
Download Telegram
🐇 استفاده از RabbitMQ برای Celery توی جنگو 🥦

امروز می‌خوایم در مورد Celery و RabbitMQ حرف بزنیم و ببینیم چطوری می‌تونیم از این دو تا ابزار خفن برای مدیریت کارهای پس‌زمینه توی Django استفاده کنیم 😎.

حالا Celery چیه؟ 🍃

اگه نمیدونید سلری چیه و چیکار میکنه میتونید به این پست سر بزنید 😉


حالا RabbitMQ چیه؟ 🐇

اگه نمیدونید ربیت ام کیو چیه و چیکار میکنه میتونید به این پست سر بزنید 😉

چرا باید از RabbitMQ برای Celery استفاده کنیم؟ 🧐

1⃣ پایداری و سرعت: RabbitMQ خیلی سریع و پایدار کار می‌کنه و می‌تونه حجم زیادی از پیام‌ها رو مدیریت کنه.

2⃣ مقیاس‌پذیری (Scalability):
اگه پروژه‌ات بزرگ شد، RabbitMQ می‌تونه بدون مشکل تسک‌های بیشتری رو هندل کنه.

3⃣ پشتیبانی از Celery: Celery به خوبی با RabbitMQ سازگاره و به راحتی می‌تونن با هم کار کنن.

چجوری RabbitMQ رو برای Celery توی جنگو تنظیم کنیم؟ 🛠️

خب، بیایید بریم سراغ بخش فنی و ببینیم چطور می‌تونیم از RabbitMQ و Celery توی جنگو استفاده کنیم.

1⃣ نصب RabbitMQ و Celery

اول از همه باید RabbitMQ رو نصب کنی. اگه از اوبونتو استفاده می‌کنی، این دستور رو بزن:

sudo apt-get install rabbitmq-server

حالا Celery رو نصب کن:

pip install celery


2⃣ تنظیمات Celery توی پروژه جنگو

توی پروژه جنگوت، یه فایل جدید به اسم celery.py بساز و تنظیمات Celery رو توش بنویس. این فایل معمولاً توی کنار settings.py قرار می‌گیره.

from __future__ import absolute_import
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')

app = Celery('your_project')

app.config_from_object('django.conf:settings', namespace='CELERY')

app.autodiscover_tasks()

بعد توی فایل init.py پروژه‌ات این خط رو اضافه کن تا Celery لود بشه:

from .celery import app as celery_app

3⃣ تنظیمات RabbitMQ توی settings.py:
توی settings.py، تنظیمات مربوط به RabbitMQ رو به Celery اضافه کن:


CELERY_BROKER_URL = 'amqp://localhost'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'

4⃣ ساختن تسک‌ها (Tasks)

حالا که تنظیمات انجام شد، می‌تونیم تسک‌های پس‌زمینه رو بسازیم. توی هر اپلیکیشنی که تسک‌ها رو می‌خوای ایجاد کنی، یه فایل tasks.py بساز و تسک‌هات رو توش تعریف کن:

from celery import shared_task

@shared_task
def send_email_task(email_address):
# کد ارسال ایمیل
print(f"ایمیل به {email_address} ارسال شد.")

5⃣ اجرای Celery Worker

برای اینکه Celery تسک‌ها رو هندل کنه، Worker راه بندازی. با این دستور می‌تونی Worker رو اجرا کنی:

celery -A your_project worker --loglevel=info

جمع‌بندی 🎯

فهمیدیم RabbitMQ و Celery یه ترکیب عالی برای اجرای تسک‌های پس‌زمینه توی پروژه‌های جنگو هستن. با استفاده از RabbitMQ به‌عنوان message broker و Celery برای مدیریت تسک‌ها، می‌تونی کارهای سنگین و زمان‌بر رو به صورت پس‌زمینه اجرا کنی و تجربه کاربری اپلیکیشن رو بهتر کنی 😎

امید وارم مفید بوده باشه :)

#django #celery #rabbitmq #ambq


@ninja_learn_ir
👍63🔥3