اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

يوفر اطار العمل drf هذه الخاصية ولتجاوز  الإعدادات الافتراضية ، يوفر  مجموعة من الزخارف الإضافية التي يمكن إضافتها إلى endpoints الخاصة بك. يجب أن تأتي هذه بعد (أدنى)  api_view. على سبيل المثال ، لإنشاء view يستخدم الخانق  throttle للتأكد من أنه لا يمكن استدعاءه إلا مرة واحدة يوميًا من قبل مستخدم معين ، استخدمthrottle_classes decorator ، وقم بتمرير قائمة بفئات الخانق:

# نستورد المكتبات المهمة
from rest_framework.decorators import api_view, throttle_classes
from rest_framework.throttling import UserRateThrottle

class OncePerDayUserThrottle(UserRateThrottle):
    rate = '1/day' # هنا عدد الاستعلامات في اليوم 

@api_view(['GET'])
@throttle_classes([OncePerDayUserThrottle]) # ثم نمررها من هنا كمزخرف
def view(request):
    return Response({"message": "انتهت صلاحيت اليوم نراك غدا"})

 

  • 0
نشر (معدل)

يمكنك استعمال مكتبة جاهزة django-ratelimit و التي ستحد عدد الطلبات التي تتلقاها خلال فترة زمنية معينة. و ذلك كالآتي:

from ratelimit.decorators import ratelimit

@ratelimit(key='ip', rate='10/m') #تحديد عدد الطلبات 10في الدقيقة مثلا
def myview(request):
  return HttpResponse()

حيث أن المقدارKey  يمكن أن يأخد شكل:

  • 'ip' أي أنك تحد نفس عنوان IP للطلب
  • 'get:X' تستخدم قيمة request.GET ['X']
  • 'post:X' تستخدم قيمة request.POST ['X']
  • 'user' تستخدم قيمة مناسبة من request.user. لا تستخدم مع المستخدمين غير المصادق عليهم.
  • 'user_or_ip'  تستخدم قيمة مناسبة من request.user إذا تمت المصادقة على المستخدم.

  المقدارrate  يمكن أن يأخد شكل:

  • s - ثواني
  •  m - دقائق
  •   h - ساعات
  •    d - أيام

لتثبيت المكتبة

pip install django-ratelimit

 

تم التعديل في بواسطة Ayoub Souad

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...