Flask-এ Celery ইন্টিগ্রেশন ব্যবহার করে ব্যাকগ্রাউন্ড টাস্ক চালানো যেতে পারে, যা আপনার অ্যাপ্লিকেশনকে দীর্ঘ চলমান কার্যক্রম বা সময়সাপেক্ষ কাজগুলো ব্যাকগ্রাউন্ডে চালানোর সুবিধা দেয়। Celery একটি শক্তিশালী, অ্যাসিঙ্ক্রোনাস টাস্ক কিউ ব্যবস্থাপনা সিস্টেম, যা ফ্লাস্কের মতো ওয়েব ফ্রেমওয়ার্কের সাথে সহজে কাজ করে।
এই টিউটোরিয়ালে, আমরা Flask এবং Celery ইন্টিগ্রেট করার পদ্ধতি দেখব।
১. Celery ইনস্টলেশন
প্রথমে, Flask অ্যাপ্লিকেশনে Celery যোগ করার জন্য Celery এবং Redis (কিউ এবং ফলাফল ব্যাকস্টোর হিসাবে) ইনস্টল করতে হবে। Redis হচ্ছে সবচেয়ে জনপ্রিয় ব্রোকার Celery-এর জন্য।
pip install celery redis
- Celery: Task queue ম্যানেজমেন্টের জন্য।
- Redis: Celery এর জন্য ব্রোকার হিসেবে ব্যবহৃত হয়।
২. Flask অ্যাপে Celery কনফিগারেশন
এখন, Flask অ্যাপ্লিকেশনে Celery ইন্টিগ্রেট করার জন্য কনফিগারেশন সেট করতে হবে।
উদাহরণ: Flask এবং Celery কনফিগারেশন
from flask import Flask
from celery import Celery
app = Flask(__name__)
# Celery কনফিগারেশন
app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0' # Redis ব্রোকার
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0' # Redis ফলাফল ব্যাকস্টোর
# Celery ইনস্ট্যান্স তৈরি
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
@app.route('/')
def index():
return 'Flask Celery Integration Example'
এখানে:
CELERY_BROKER_URL: এটি Redis সার্ভারের URL, যা Celery টাস্ক ম্যানেজমেন্টের জন্য ব্যবহৃত হয়।CELERY_RESULT_BACKEND: এটি Redis সার্ভারে টাস্ক ফলাফল সংরক্ষণ করতে ব্যবহৃত হয়।
৩. Flask অ্যাপে Celery Task তৈরি করা
Flask অ্যাপের মধ্যে Celery Task তৈরি করতে আমরা একটি ফাংশন ব্যবহার করব যা ব্যাকগ্রাউন্ডে চলবে।
উদাহরণ: একটি সিম্পল Celery Task
# Celery টাস্ক তৈরি
@celery.task
def add_numbers(a, b):
return a + b
এখানে:
add_numbers: এটি একটি সিম্পল অ্যাসিঙ্ক্রোনাস ফাংশন যা দুইটি সংখ্যা যোগ করবে এবং ফলাফল ফেরত দেবে।
৪. Celery Task কল করা
Celery টাস্ক অ্যাসিঙ্ক্রোনাসভাবে কল করা হয়। Flask অ্যাপ্লিকেশন থেকে এই টাস্ক কল করা যাবে এবং টাস্কটি ব্যাকগ্রাউন্ডে রান করবে।
উদাহরণ: Celery Task কল করা
@app.route('/add')
def add():
task = add_numbers.apply_async(args=[5, 10]) # অ্যাসিঙ্ক্রোনাস টাস্ক কল
return f"Task started! Task ID: {task.id}"
এখানে:
apply_async(): এটি Celery টাস্ককে অ্যাসিঙ্ক্রোনাসভাবে রান করানোর জন্য ব্যবহৃত হয়।task.id: এটি টাস্কের ID যা পরে ট্র্যাক করা যেতে পারে।
৫. Celery Task এর ফলাফল চেক করা
Celery Task-এর ফলাফল ট্র্যাক করা যায়। টাস্ক সম্পন্ন হওয়ার পর আপনি সেই ফলাফল পেতে পারেন।
উদাহরণ: টাস্কের ফলাফল সংগ্রহ করা
@app.route('/result/<task_id>')
def get_result(task_id):
task = celery.AsyncResult(task_id)
if task.state == 'SUCCESS':
return f'Task result: {task.result}'
else:
return f'Task state: {task.state}'
এখানে:
AsyncResult: এটি Celery টাস্কের স্টেট এবং ফলাফল ট্র্যাক করতে ব্যবহৃত হয়।task.state: এটি টাস্কের স্টেট দেখাবে (যেমন,SUCCESS,PENDING,FAILURE)।task.result: এটি টাস্কের ফলাফল প্রদান করবে যদি টাস্ক সফলভাবে সম্পন্ন হয়।
৬. Flask অ্যাপ্লিকেশন চালানো
Flask অ্যাপ্লিকেশন চালানোর জন্য সাধারণ Flask কমান্ড ব্যবহার করা হয়।
flask run
এখন, Flask অ্যাপ্লিকেশনের সাথে Celery একত্রে কাজ করবে। Celery টাস্কগুলোর প্রসেসিং হবে এবং Flask অ্যাপ্লিকেশন টাস্কের ফলাফল ট্র্যাক করবে।
৭. Celery Worker চালানো
Celery টাস্কগুলো সম্পন্ন করতে Celery Worker চালাতে হবে। নিচের কমান্ড দিয়ে Celery Worker চালানো যাবে:
celery -A app.celery worker
এখানে:
-A app.celery:app.celeryCelery ইনস্ট্যান্সটি নির্দেশ করে, যা Flask অ্যাপের মধ্যে সেটআপ করা হয়েছে।worker: এটি Celery Worker চালাতে ব্যবহৃত হয়, যা ব্যাকগ্রাউন্ড টাস্ক প্রসেস করবে।
৮. Celery Beat (Periodic Task Scheduling)
Flask-এ Celery-কে periodic tasks (নির্দিষ্ট সময় অন্তর টাস্ক চালানো) পরিচালনা করতে Celery Beat ব্যবহার করা হয়। এটি সময়ে সময়ে বা নির্দিষ্ট সময় অন্তর টাস্ক চালাতে ব্যবহৃত হয়।
উদাহরণ: Celery Beat কনফিগারেশন
from celery import Celery
from celery.schedules import crontab
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
# Celery Beat কনফিগারেশন
celery.conf.beat_schedule = {
'send-email-every-minute': {
'task': 'app.send_email',
'schedule': crontab(minute='*/1'), # প্রতি ১ মিনিট পর পর ইমেইল পাঠানো
}
}
# টাস্ক সেট করা
@celery.task
def send_email():
# ইমেইল পাঠানোর কোড এখানে থাকবে
pass
এখানে:
crontab(minute='*/1'): এটি প্রতি ১ মিনিটে টাস্ক চালানোর জন্য কনফিগার করা হয়েছে।
Flask এবং Celery ইন্টিগ্রেশন ব্যাকগ্রাউন্ড টাস্ক এবং অ্যাসিঙ্ক্রোনাস প্রসেসিংয়ের জন্য অত্যন্ত কার্যকরী। Flask-এ Celery ব্যবহার করে আপনি টাইম-নিবদ্ধ টাস্ক, ব্যাকগ্রাউন্ডে ফাইল প্রসেসিং, ইমেইল পাঠানো, ডেটাবেস আপডেট এবং অন্যান্য সময়সাপেক্ষ কাজ পরিচালনা করতে পারেন। Celery Beat ব্যবহার করে আপনি নিয়মিত এবং পরিকল্পিত টাস্কগুলোও পরিচালনা করতে পারেন। Flask এবং Celery এর সমন্বয় আপনার অ্যাপ্লিকেশনে কার্যকারিতা এবং স্কেলেবিলিটি যোগ করতে সহায়তা করবে।