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

تسقيف عدد requests في django rest framework

Ecommerce Vente

السؤال

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...