Cron Jobs এবং Task Scheduling হল সিস্টেমে নির্দিষ্ট সময় বা সময়ে নির্দিষ্ট কাজ চালানোর জন্য ব্যবহৃত পদ্ধতি। Rails অ্যাপ্লিকেশনগুলিতে নিয়মিত কাজ (যেমন ডেটাবেস ব্যাকআপ, ডেটা পরিষ্কারকরণ, ইমেইল পাঠানো ইত্যাদি) পরিচালনা করার জন্য ক্রন জব এবং টাস্ক স্কেজ্যুলিং ব্যবহৃত হয়। Ruby on Rails এ cron jobs এবং task scheduling ব্যবস্থাপনা করার জন্য কিছু জনপ্রিয় টুল এবং পদ্ধতি রয়েছে, যার মধ্যে Whenever gem এবং Active Job অন্যতম।
Cron Jobs: পরিচিতি
Cron একটি লিনাক্স/ইউনিক্স ভিত্তিক কমান্ড লাইন টুল যা নির্দিষ্ট সময়ে নির্দিষ্ট কাজ চালানোর জন্য ব্যবহৃত হয়। এটি সাধারণত সিস্টেম অ্যাডমিনিস্ট্রেটররা ব্যবহার করে থাকে, তবে Rails অ্যাপ্লিকেশনেও এটি ব্যবহার করা যায় স্বয়ংক্রিয়ভাবে কাজ পরিচালনার জন্য।
Cron Jobs সাধারণত রুট ফাইল /etc/crontab বা ইউজার লেভেলে crontab -e এর মাধ্যমে কনফিগার করা হয়। আপনি নির্দিষ্ট সময় এবং দিনের জন্য কাজগুলো সময় নির্ধারণ করতে পারেন।
Rails-এ Cron Jobs কনফিগারেশন
Rails এ Whenever gem ব্যবহার করে ক্রন জবের জন্য কনফিগারেশন করা হয়। Whenever gem আপনাকে কোডে ক্রন জবগুলি কনফিগার করতে দেয়, যা পরে crontab ফাইলে ম্যানুয়ালি যুক্ত করা হয়।
Whenever gem ইনস্টলেশন
১. প্রথমে Gemfile এ whenever যোগ করুন:
gem 'whenever', require: false
২. এরপর, bundle install রান করুন:
bundle install
Whenever কনফিগারেশন ফাইল তৈরি
Whenever gem একটি বিশেষ ফাইল schedule.rb তৈরি করে যেখানে আপনি আপনার ক্রন জব কনফিগার করবেন।
rails generate whenever:install
এটি config/schedule.rb ফাইল তৈরি করবে। এখানে আপনি নিয়মিত কাজগুলোর স্কেজ্যুল করতে পারেন।
Cron Job কনফিগারেশন
config/schedule.rb ফাইলে আপনার ক্রন জবগুলি কনফিগার করতে পারেন। উদাহরণস্বরূপ, যদি আপনি প্রতিদিন রাতে ১২টায় একটি রিসোর্স পরিষ্কার করতে চান:
every 1.day, at: '12:00 am' do
runner "Model.cleanup_old_data"
end
এখানে, every 1.day দ্বারা প্রতিদিন কাজটি চলবে এবং runner দিয়ে Rails মডেল বা মেথড চালানো হবে।
Cron Jobs এর প্রসারণ
আপনি আরও জটিল কাজের জন্য যেমন:
- ডেলিভারিবল ইমেইল পাঠানো
- ডেটা ব্যাকআপ করা
- ডেটাবেস পরিষ্কার করা
এই সকল কাজ schedule করতে পারেন।
every 1.week do
runner "Backup.perform_daily_backup"
end
Whenever এবং Cron Job রিফ্রেশ করা
ক্রন জবগুলি শিডিউল করার জন্য:
whenever --update-crontab
এটি আপনার schedule.rb ফাইলের কনফিগারেশন অনুযায়ী স্বয়ংক্রিয়ভাবে crontab আপডেট করে দিবে।
Active Job: Task Scheduling এবং ব্যাকগ্রাউন্ড টাস্ক
Active Job হল Rails এর একটি বিল্ট-ইন টুল, যা ব্যাকগ্রাউন্ড টাস্ক পরিচালনা এবং স্কেজ্যুলিংয়ের জন্য ব্যবহৃত হয়। Active Job বিভিন্ন ব্যাকগ্রাউন্ড টাস্ক প্রসেসর (যেমন Sidekiq, Resque, Delayed Job) এর সাথে কাজ করতে পারে।
Active Job সেটআপ
১. প্রথমে Gemfile এ সঠিক ব্যাকগ্রাউন্ড জব প্রসেসর যোগ করুন। যেমন Sidekiq:
gem 'sidekiq'
এবং তারপর bundle install রান করুন।
২. এর পর, Active Job ক্লাস তৈরি করুন:
rails generate job CleanupOldData
এটি app/jobs ফোল্ডারে একটি cleanup_old_data_job.rb ফাইল তৈরি করবে, যেখানে আপনি আপনার ব্যাকগ্রাউন্ড কাজের লজিক লিখবেন।
class CleanupOldDataJob < ApplicationJob
queue_as :default
def perform(*args)
# পুরনো ডেটা পরিষ্কার করার কাজ
Model.cleanup_old_data
end
end
Job শিডিউল করা
Active Job সাধারণত ম্যানুয়ালি কল করতে হয় অথবা আপনি একে কোনো ব্যাকগ্রাউন্ড প্রসেসর (যেমন Sidekiq) এর মাধ্যমে শিডিউল করতে পারেন। উদাহরণস্বরূপ:
CleanupOldDataJob.set(wait: 5.minutes).perform_later
এটি ৫ মিনিট পরে CleanupOldDataJob চালাবে।
Job এবং Cron Job একত্রিত করা
যদি আপনি Active Job এবং Cron Job একত্রে ব্যবহার করতে চান, তবে আপনি Whenever gem-এর মাধ্যমে Active Job কে Cron Job হিসেবে সেটআপ করতে পারেন।
every 1.day, at: '12:00 am' do
runner "CleanupOldDataJob.perform_later"
end
এখানে, CleanupOldDataJob.perform_later ব্যাকগ্রাউন্ডে কাজ করবে এবং ক্রন জব এর মাধ্যমে প্রতিদিন রাত ১২টায় এটি চালানো হবে।
Task Scheduling এর জন্য অন্যান্য টুলস
Rails এ Task Scheduling এবং Cron Job সেটআপের জন্য কিছু অন্যান্য জনপ্রিয় টুলস ব্যবহার করা যেতে পারে, যেমন:
- Sidekiq: এটি একটি শক্তিশালী এবং জনপ্রিয় ব্যাকগ্রাউন্ড জব প্রসেসর যা Redis ব্যবহার করে। এটি দ্রুত এবং স্কেলেবল।
- Resque: এটি আরেকটি ব্যাকগ্রাউন্ড জব প্রসেসর, তবে এটি তুলনামূলকভাবে Sidekiq এর চেয়ে কিছুটা ধীর।
- Delayed Job: এটি আরও সহজ এবং নির্ভরযোগ্য, তবে এটি উচ্চ-লোড সিস্টেমের জন্য কম উপযোগী।
সারমর্ম
Cron Jobs এবং Task Scheduling Ruby on Rails অ্যাপ্লিকেশনগুলির জন্য গুরুত্বপূর্ণ পদ্ধতি, যা নির্দিষ্ট সময়ে নিয়মিত কাজ পরিচালনা করে। Whenever gem এর মাধ্যমে Rails অ্যাপ্লিকেশনে সহজে Cron Jobs কনফিগার করা যায়, এবং Active Job ব্যাকগ্রাউন্ড কাজ এবং টাস্ক স্কেজ্যুলিংয়ের জন্য একটি কার্যকর পদ্ধতি সরবরাহ করে। আপনি আপনার অ্যাপ্লিকেশনে প্রয়োজনীয় টাস্ক বা কাজ স্কেজ্যুল করতে এবং পরিচালনা করতে এই দুটি পদ্ধতি ব্যবহার করতে পারেন।
Read more