ریٹ لمٹس، دوبارہ کوشش اور Exponential Backoff
Rate limits, retries, and exponential backoff
35 منٹ
تین طریقے
Rate limiting وہ صاف حد ہے جو ایک API ایک کالر کی درخواستوں پر کسی وقفے کے اندر لگاتا ہے۔ عام حد 60 درخواستیں فی منٹ، یا 1000 فی گھنٹہ، یا 100 فی سیکنڈ ہوتی ہے۔ حد کا اعلان دو طرح سے ہوتا ہے۔ خاموشی سے، HTTP headers میں: X-RateLimit-Limit کل بجٹ، X-RateLimit-Remaining کتنا باقی، X-RateLimit-Reset کب دوبارہ بھرے گا۔ بلند آواز سے، 429 status code میں: درخواستیں زیادہ ہیں، آپ کی رفتار کم کر دی گئی۔ مہذب کلائنٹ headers دیکھتا ہے اور کبھی 429 تک نہیں پہنچتا۔ سست کلائنٹ کو سوائے 429 کے کچھ نظر نہیں آتا۔
پاکستانی سیاق۔ اسٹیٹ بینک کے PRISM اور RAAST گیٹ ویز شریک کے حساب سے رفتار محدود کرتے ہیں۔ NADRA کا verification API ہر شراکت دار بینک کے لیے، عام طور پر چند سو verifications فی منٹ فی برانچ۔ FBR کا IRIS API ہر NTN کے لیے چند سوالات فی منٹ۔ ایزی پیسہ کا مرچنٹ API ہر مرچنٹ کے لیے فی سیکنڈ لین دین محدود کرتا ہے تاکہ SBP کی پٹڑیاں صحت مند رہیں۔ یہ حدود سزا نہیں ہیں۔ یہی وہ طریقہ ہے جس سے ملک کی ادائیگی اور شناخت کی پٹڑیاں اس وقت زندہ رہتی ہیں جب ایک کروڑ پاکستانی ایک لمحے میں ٹکراتے ہیں۔
Exponential backoff وہ نظم و ضبط ہے جس سے کلائنٹ 429 یا 5xx کا جواب دیتا ہے۔ ایک سیکنڈ رکیں، دوبارہ کوشش کریں۔ پھر ناکام ہو تو دو سیکنڈ۔ پھر چار، پھر آٹھ، پھر سولہ، ساٹھ پر روکیں۔ ہر بار دگنا کیوں؟ کیونکہ اگر آپ اور دس ہزار دوسرے کلائنٹس ایک ہی سیکنڈ بعد ساتھ کوشش کریں، تو ایک گرجتا ہوا ریوڑ بنتا ہے جو سرور کو دوبارہ گرا دیتا ہے۔ دگنا ہر کسی کو وسیع ہوتے وقفے میں پھیلا دیتا ہے۔ تھوڑا jitter یعنی چند ملی سیکنڈ کی بے ترتیب اضافہ ڈالیں، اور دگنا کا نمونہ بھی ہم آہنگ نہیں رہتا۔ API انجینئرنگ کا سب سے پیشہ ورانہ نمونہ ہے: 'capped exponential backoff with full jitter اور دوبارہ کوشش کی ایک سخت حد'۔
فوری چیک
فوری چیک: جدید AI روایتی قاعدہ بنیاد پروگرام سے کس طرح مختلف ہے؟
کیوں؟
کیوں کا پہلا درجہ: rate limit کیوں، زیادہ سرور کیوں نہ خریدیں؟ کیونکہ مانگ ہمیشہ سپلائی سے تیز اچھلتی ہے۔ لامحدود پیسے کے ساتھ بھی، SBP گیٹ وے کو بدترین پیر کی صبح کے حساب سے تیار کرنا ممکن نہیں۔ Rate limiting مانگ کا رخ موڑ دیتی ہے تاکہ سپلائی پکڑ سکے۔
Claude کے ساتھ آزمائیں
Claude یا ChatGPT کے ساتھ آزمانے کے لیے پرامپٹ: 'Python کوڈ لکھیں جو ایک پاکستانی API کو کال کرتا ہے جس کی حد 60 درخواست فی منٹ ہے، 10,000 NTNs کی فہرست پر کام کرتا ہے، capped exponential backoff with full jitter استعمال کرتا ہے، زیادہ سے زیادہ پانچ retries، اور ہر write پر idempotency key۔ تبصرے رومن اردو میں۔ ہر ڈیزائن کا جواز بھی لکھیں۔' کوڈ کو سطر بہ سطر پڑھیں اور ہر فرض کو چیلنج کریں۔
ماخذ
ماخذ اور مزید مطالعہ۔ AWS Architecture Blog، 'Exponential Backoff and Jitter'۔ Stripe API docs، 'Idempotent Requests'۔ Cloudflare Learning Center، 'What is rate limiting'۔ RFC 6585۔ SBP Open Banking Framework مسودہ۔ Anthropic Messages API rate limit headers (docs.anthropic.com)۔