Celery কী এবং কীভাবে কাজ করে?

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এবং Celery এর Integration (Task Queue)
197

Celery হলো একটি Asynchronous Task Queue বা Distributed Task Queue যা Python-ভিত্তিক এবং ডিজাইন করা হয়েছে দীর্ঘ-running বা ব্যাকগ্রাউন্ড টাস্কগুলি প্রক্রিয়া করার জন্য। এটি মূলত কাজের লোডকে সামাল দেওয়ার জন্য ব্যবহৃত হয়, যেখানে কিছু কাজ পেছনে চলে যেতে পারে, যেমন ইমেইল পাঠানো, ফাইল প্রসেসিং, ডেটা বিশ্লেষণ ইত্যাদি। Celery কাজ করার জন্য message brokers (যেমন RabbitMQ, Redis) ব্যবহার করে।

FastAPI এর সাথে Celery ইন্টিগ্রেট করা গেলে, আমরা Async Task বা Background Task অ্যাসিনক্রোনাসভাবে চালাতে পারি, এবং মূল অ্যাপের রেসপন্স দ্রুত ফিরে আসতে সাহায্য করতে পারি।


Celery কী?

Celery হলো একটি টাস্ক কিউ (Task Queue) সিস্টেম যা মূলত কিছু কাজকে ব্যাকগ্রাউন্ডে প্রক্রিয়া করার জন্য ব্যবহৃত হয়। এটি মূল অ্যাপ্লিকেশনের সাথে সমান্তরালে কাজ করে এবং task বা job গুলোকে পরবর্তী সময়ে সঞ্চালন করতে সহায়তা করে।

Celery সাধারণত message brokers (যেমন RabbitMQ, Redis) ব্যবহার করে কাজের অর্ডার বা কাজের বিস্তারিত বার্তা (task) পাঠায় এবং workers সেই কাজগুলো প্রসেস করে। এটি asynchronous এবং distributed কাজ করার জন্য উপযুক্ত, যার মাধ্যমে ভারী বা দীর্ঘ-running কাজগুলি প্রক্রিয়া করা সম্ভব হয়।


Celery এবং FastAPI এর Integration

FastAPI এবং Celery ইন্টিগ্রেট করার মাধ্যমে আপনি Asynchronous Task Queue পরিচালনা করতে পারেন, যার মাধ্যমে আপনার FastAPI অ্যাপ্লিকেশন ব্যাকগ্রাউন্ডে বড় ও সময়সাপেক্ষ কাজ করতে পারে।


Celery কীভাবে কাজ করে?

Celery কাজ করার জন্য নিচের প্রধান উপাদানগুলির প্রয়োজন:

  1. Task Queue - একটি কিউ যেখানে টাস্কগুলি রাখা হয়। সাধারণত, Redis বা RabbitMQ ব্যবহৃত হয়।
  2. Workers - যারা কিউ থেকে টাস্ক গ্রহণ করে এবং তা প্রক্রিয়া করে।
  3. Brokers - যারা কিউ এবং টাস্কগুলোর মধ্যে মেসেজ ট্রান্সফার করে (যেমন Redis বা RabbitMQ)।

Celery এর কাজের ধাপ:

  1. Task Creation: একটি অ্যাপ্লিকেশন Celery টাস্ক তৈরি করে। এই টাস্কটি কাজটি এক্সিকিউট করার জন্য একটি ফাংশন হতে পারে।
  2. Task Submission: টাস্কটি Celery কিউতে জমা দেওয়া হয়।
  3. Task Execution by Worker: Celery Worker কিউ থেকে টাস্ক নেয় এবং প্রক্রিয়া শুরু করে।
  4. Task Completion: টাস্ক সম্পন্ন হলে, Celery Worker তা রিপোর্ট বা রেসপন্স প্রেরণ করতে পারে।

FastAPI এবং Celery সেটআপ করা

FastAPI এবং Celery ইন্টিগ্রেট করতে নিচের ধাপগুলো অনুসরণ করা হবে:


Step 1: প্রয়োজনীয় প্যাকেজ ইনস্টল করা

প্রথমে আপনাকে FastAPI, Celery, এবং Redis প্যাকেজ ইনস্টল করতে হবে। আমরা Redis ব্যবহার করব ব্রোকার হিসেবে।

pip install fastapi uvicorn celery redis

Step 2: Celery কনফিগারেশন

Celery কনফিগারেশন এবং টাস্ক তৈরি করা:

উদাহরণ: celery_worker.py

from celery import Celery

# Celery কনফিগারেশন
app = Celery('worker', broker='redis://localhost:6379/0')

@app.task
def send_email(email: str):
    # Email পাঠানোর কাজ (এটি একটি উদাহরণ, বাস্তব কাজ হবে)
    print(f"Sending email to {email}")
    return f"Email sent to {email}"

এখানে, send_email একটি সিম্পল টাস্ক যা একটি ইমেইল ঠিকানায় ইমেইল পাঠানোর উদাহরণ হিসেবে দেখানো হয়েছে। এই টাস্কটি ব্যাকগ্রাউন্ডে চলবে।

Celery worker চালানো:

celery -A celery_worker.app worker --loglevel=info

এই কমান্ডটি Celery Worker চালু করবে, যা Redis ব্রোকার থেকে টাস্ক গ্রহণ করবে এবং প্রসেস করবে।


Step 3: FastAPI কনফিগারেশন

এখন FastAPI অ্যাপ্লিকেশন তৈরি করতে হবে যা এই Celery টাস্কগুলি কার্যকর করবে।

উদাহরণ: main.py

from fastapi import FastAPI
from celery_worker import send_email

app = FastAPI()

@app.post("/send-email/")
async def create_email_task(email: str):
    # Celery টাস্ক কল করা
    send_email.apply_async(args=[email])
    return {"message": f"Email task for {email} is being processed in the background"}

এখানে, /send-email/ রাউটটি একটি POST রিকোয়েস্ট গ্রহণ করে, ইমেইল পাঠানোর জন্য Celery টাস্ককে apply_async() ব্যবহার করে কল করবে।


Step 4: Uvicorn দিয়ে FastAPI অ্যাপ চালানো

FastAPI অ্যাপ চালানোর জন্য Uvicorn ব্যবহার করা হয়।

uvicorn main:app --reload

এটি FastAPI অ্যাপ চালু করবে।


Step 5: টেস্ট রিকোয়েস্ট

এখন আপনি একটি POST রিকোয়েস্ট পাঠাতে পারেন যা Celery টাস্ককে ট্রিগার করবে।

POST রিকোয়েস্ট:

URL: /send-email/
Body:

{
  "email": "user@example.com"
}

রেসপন্স:

{
  "message": "Email task for user@example.com is being processed in the background"
}

এখানে, Celery worker ব্যাকগ্রাউন্ডে ইমেইল পাঠানোর কাজ করবে এবং তা আপনার মূল অ্যাপ্লিকেশন থেকে পৃথকভাবে প্রসেস হবে।


Step 6: Celery Worker এর লগ চেক করা

Celery Worker-এ send_email টাস্কটি প্রসেস হচ্ছে কিনা তা দেখতে, celery_worker.py চালু রাখুন এবং Redis এর লগ দেখুন। যখন আপনি POST রিকোয়েস্ট পাঠাবেন, তখন Celery Worker টাস্কটি গ্রহণ করবে এবং সম্পন্ন করবে।


Celery এবং FastAPI এর ইন্টিগ্রেশন ব্যাকগ্রাউন্ডে লম্বা-running বা সময়সাপেক্ষ কাজ করার জন্য উপযুক্ত। Task Queue এর মাধ্যমে FastAPI অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করা যায় এবং ব্যবহারকারীকে দ্রুত রেসপন্স প্রদান করা সম্ভব হয়। Celery এর মাধ্যমে আপনি ইমেইল পাঠানো, ফাইল প্রসেসিং, ডেটা বিশ্লেষণ ইত্যাদি কাজগুলিকে ব্যাকগ্রাউন্ডে প্রসেস করতে পারেন, যা অ্যাপ্লিকেশনের কার্যক্ষমতা এবং স্কেলেবিলিটি বৃদ্ধি করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...