🐇 استفاده از 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 رو نصب کنی. اگه از اوبونتو استفاده میکنی، این دستور رو بزن:
حالا Celery رو نصب کن:
2⃣ تنظیمات Celery توی پروژه جنگو
توی پروژه جنگوت، یه فایل جدید به اسم
بعد توی فایل init.py پروژهات این خط رو اضافه کن تا Celery لود بشه:
3⃣ تنظیمات RabbitMQ توی settings.py:
توی settings.py، تنظیمات مربوط به RabbitMQ رو به Celery اضافه کن:
4⃣ ساختن تسکها (Tasks)
حالا که تنظیمات انجام شد، میتونیم تسکهای پسزمینه رو بسازیم. توی هر اپلیکیشنی که تسکها رو میخوای ایجاد کنی، یه فایل tasks.py بساز و تسکهات رو توش تعریف کن:
5⃣ اجرای Celery Worker
برای اینکه Celery تسکها رو هندل کنه، Worker راه بندازی. با این دستور میتونی Worker رو اجرا کنی:
جمعبندی 🎯
فهمیدیم RabbitMQ و Celery یه ترکیب عالی برای اجرای تسکهای پسزمینه توی پروژههای جنگو هستن. با استفاده از RabbitMQ بهعنوان message broker و Celery برای مدیریت تسکها، میتونی کارهای سنگین و زمانبر رو به صورت پسزمینه اجرا کنی و تجربه کاربری اپلیکیشن رو بهتر کنی 😎
امید وارم مفید بوده باشه :)
@ninja_learn_ir
امروز میخوایم در مورد 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
👍6❤3🔥3