throttle_classes = [UserRateThrottle] ডজ্যাঙ্গো রেস্ট ফ্রেমওয়ার্কের (DRF) একটি বৈশিষ্ট্য, যা ব্যবহারকারী বা ক্লায়েন্টকে নির্দিষ্ট পরিমাণ অনুরোধ (API request) পাঠানোর হার সীমাবদ্ধ (throttle) করতে সহায়তা করে। এটি মূলত API-তে অস্বাভাবিকভাবে বেশি পরিমাণ রিকোয়েস্ট পাঠানোর হাত থেকে রক্ষা করে এবং সার্ভারের লোড কমাতে সাহায্য করে।
এখন UserRateThrottle কীভাবে কাজ করে, তা ব্যাখ্যা করা যাক:
কিভাবে কাজ করে:
- রেট লিমিটিং (Rate Limiting):
UserRateThrottleব্যবহার করে আপনি প্রতিটি ব্যবহারকারীর জন্য নির্দিষ্ট সময়ের মধ্যে কতগুলো অনুরোধ অনুমোদিত হবে তা নির্ধারণ করতে পারেন।- উদাহরণস্বরূপ, আপনি যদি ঠিক করেন যে একজন ব্যবহারকারী প্রতি মিনিটে সর্বাধিক ১০টি API রিকোয়েস্ট করতে পারবে, তাহলে ১০টির বেশি রিকোয়েস্ট হলে ব্যবহারকারীকে একটি “429 Too Many Requests” ত্রুটি বার্তা পাঠানো হবে।
- ইউজার ভিত্তিক থ্রটলিং:
UserRateThrottleব্যবহারকারীর উপর ভিত্তি করে কাজ করে। এর মানে হলো, প্রতিটি পৃথক ব্যবহারকারীর জন্য আলাদা রেট লিমিট প্রয়োগ হবে।- ব্যবহারকারীর শনাক্তকরণ করার জন্য ডজ্যাঙ্গো সাধারণত তার
usernameবাauthenticationtoken ব্যবহার করে।
- কনফিগারেশন (Configuration):
- আপনি
UserRateThrottleক্লাস ব্যবহার করে রেট লিমিট কনফিগার করতে পারেন। DRF এর সেটিংসেDEFAULT_THROTTLE_RATESএর মাধ্যমে আপনি সারা অ্যাপ্লিকেশনের জন্য গ্লোবাল লিমিটও নির্ধারণ করতে পারবেন।
- আপনি
# settings.py ফাইলে
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_RATES': {
'user': '10/minute', # প্রতি মিনিটে ১০টি রিকোয়েস্ট
}
}
উদাহরণ:
আপনি যদি একটি ভিউসেটে throttle_classes ব্যবহার করেন, তাহলে এরকম হবে:
from rest_framework.throttling import UserRateThrottle
class EmployeeViewSet(viewsets.ModelViewSet):
queryset = Employee.objects.all()
serializer_class = EmployeeSerializer
authentication_classes = [JWTAuthentication]
permission_classes = [IsAuthenticated]
throttle_classes = [UserRateThrottle] # এখানে থ্রটল ক্লাস প্রয়োগ হচ্ছে
# বাকি মেথডগুলো
সুবিধা:
- API সুরক্ষা: এটি API-কে অপ্রয়োজনীয় লোড থেকে রক্ষা করে এবং সার্ভারকে অতিরিক্ত চাপ থেকে বাঁচায়।
- ডিডস আক্রমণ প্রতিরোধ: অনাকাঙ্ক্ষিত বা ডিস্ট্রিবিউটেড ডিনায়েল অফ সার্ভিস (DDoS) আক্রমণ প্রতিরোধে সাহায্য করে, কারণ নির্দিষ্ট সময়ের মধ্যে একটি ব্যবহারকারীর রিকোয়েস্ট সংখ্যা সীমিত থাকে।
- ফেয়ার ইউজার এক্সেস: এটি নিশ্চিত করে যে সব ব্যবহারকারী নির্দিষ্ট রেটের মধ্যে API ব্যবহার করতে পারবে, এবং কেউ অতিরিক্ত ব্যবহার করতে পারবে না।
এভাবে UserRateThrottle সিস্টেমকে স্থিতিশীল ও সুরক্ষিত রাখার জন্য কার্যকর একটি উপায়।