Ecommerce Vente نشر 10 سبتمبر 2022 أرسل تقرير نشر 10 سبتمبر 2022 اريد تسقيف عدد requests لأحد endpoints بواسطة django rest framework 1 اقتباس
0 Ahmed Sadek Elamine Touahria نشر 10 سبتمبر 2022 أرسل تقرير نشر 10 سبتمبر 2022 يوفر اطار العمل 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": "انتهت صلاحيت اليوم نراك غدا"}) 1 اقتباس
0 Ayoub Souad نشر 10 سبتمبر 2022 أرسل تقرير نشر 10 سبتمبر 2022 (معدل) يمكنك استعمال مكتبة جاهزة 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 تم التعديل في 10 سبتمبر 2022 بواسطة Ayoub Souad اقتباس
السؤال
Ecommerce Vente
اريد تسقيف عدد requests لأحد endpoints بواسطة django rest framework
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.