ஆதாயங்கள்:
- வேக வரம்புகள் (RPM/ITPM/OTPM) மற்றும் 429 பிழைகளை விளக்க முடியும்
- அதிவேக பின்னடைவைச் செயல்படுத்துகிறது மற்றும் மறுமுயற்சிக்குப் பிறகு மீண்டும் முயற்சிக்கவும்
- பொதுவான HTTP பிழைக் குறியீடுகளை சரியாக வகைப்படுத்தி கையாளுகிறது (400/401/429/500/529)
ஒரு உற்பத்தி சூழலில், எந்த API எல்லா நேரத்திலும் சரியாக பதிலளிக்காது. சில நேரங்களில் நீங்கள் கோரிக்கைகளை மிக விரைவாக அனுப்புகிறீர்கள் மற்றும் வரம்பைத் தாக்குகிறீர்கள்; சில நேரங்களில் சேவையகம் தற்காலிகமாக பிஸியாக இருக்கும்; சில நேரங்களில் உங்கள் கோரிக்கை ஆரம்பத்தில் இருந்தே தவறாக இருக்கும். ஒரு அமெச்சூர் முயற்சியில் இருந்து ஒரு திடமான ஒருங்கிணைப்பை வேறுபடுத்துவது என்னவென்றால், அது இந்த சூழ்நிலைகளை முன்னறிவிக்கும் மற்றும் தானாகவே கையாளுகிறது. இந்த யூனிட்டில் நீங்கள் விகித வரம்புகள் (RPM/ITPM/OTPM), 429 பிழை, அதிவேக பேக்ஆஃப் மூலம் மீண்டும் முயற்சிக்கவும் மற்றும் பொதுவான HTTP பிழைக் குறியீடுகளின் சரியான வகைப்பாடு பற்றி அறிந்து கொள்வீர்கள். குறிக்கோள்: ஒரு பயனர் அதை ஒருபோதும் கவனிக்காத அளவுக்கு வலுவான ஓட்டத்தை உருவாக்குவது.
வேக வரம்புகள் என்ன?
ஒரு குறிப்பிட்ட காலப்பகுதியில் ஒரு சுவிட்ச் எவ்வளவு வேலை செய்ய முடியும் என்பதை வழங்குநர் வரம்பிடுகிறார். இந்த பாதுகாப்பு; இது உள்கட்டமைப்பு மற்றும் உங்களை திடீர் செலவு வெடிப்பிலிருந்து பாதுகாக்கிறது. மூன்று பொதுவான வகை வரம்புகள் உள்ளன:
- RPM (நிமிடத்திற்கான கோரிக்கைகள்): நிமிடத்திற்கு கோரிக்கைகளின் எண்ணிக்கை.
- ITPM (நிமிடத்திற்கு உள்ளீட்டு டோக்கன்கள்): ஒரு நிமிடத்திற்கு செயலாக்கக்கூடிய உள்ளீட்டு டோக்கன்.
- OTPM (நிமிடத்திற்கு வெளியீடு டோக்கன்கள்): ஒரு நிமிடத்திற்கு உற்பத்தி செய்யக்கூடிய வெளியீட்டு டோக்கன்.
இந்த வரம்புகளில் ஏதேனும் ஒன்றை நீங்கள் மீறினால், வழங்குநர் கோரிக்கையை நிராகரித்து 429 பிழைக் குறியீட்டை வழங்குவார். வரம்புகள் பொதுவாக உங்கள் கணக்கு நிலை (அடுக்கு) பொறுத்து மாறுபடும் மற்றும் காலப்போக்கில் அதிகரிக்கலாம்.
உதவிக்குறிப்பு: நீங்கள் வரம்பை நெருங்கும் போது பதில் தலைப்புகளில் இருந்து பார்க்கலாம். பெரும்பாலான வழங்குநர்கள் உங்கள் மீதமுள்ள ஒதுக்கீட்டை x-ratelimit-remaining-* போன்ற தலைப்புகளுடன் தெரிவிக்கின்றனர். இந்த மதிப்புகளைக் கண்காணித்து, முன்னால் உள்ள போக்குவரத்தைத் தடுப்பது 429 ஐப் பெறாமல் சிக்கலைத் தடுக்க மிகவும் முதிர்ந்த வழியாகும்.
429 மற்றும் எக்ஸ்போனென்ஷியல் ரிட்ரேஸ்மென்ட்
429 (விகித வரம்பு) ஒரு தற்காலிக மற்றும் மீண்டும் முயற்சிக்கக்கூடிய பிழை. கோரிக்கைக்காக சிறிது நேரம் காத்திருந்து மீண்டும் முயலுவதே சரியான பதில். ஆனால் ஒரு நிலையான காத்திருப்பு போதாது; அனைவரும் ஒரே நேரத்தில் மீண்டும் முயற்சித்தால், வரம்பு மீண்டும் எட்டப்படும். தீர்வு அதிவேக பின்னடைவு: ஒவ்வொரு தோல்வியுற்ற முயற்சியிலும் காத்திருப்பு நேரத்தை அதிவேகமாக அதிகரிக்கும்.
# எக்ஸ்போனென்ஷியல் பேக்ஆஃப் லாஜிக் சோதனை 1 → 429 → காத்திரு 1 நொடி சோதனை 2 → 429 → காத்திரு 2 நொடி சோதனை 3 → 429 → காத்திரு 4 நொடி சோதனை 4 → 429 → காத்திரு 8 நொடி சோதனைக்குப் பிறகு "ஜிட்டர்"
இதில் சிறிது சீரற்ற தன்மையை (நடுக்கம்) சேர்ப்பது ஒரே நேரத்தில் மீண்டும் முயற்சிக்கும்போது கோரிக்கைகள் மோதுவதைத் தடுக்கிறது. கூடுதலாக, 429 பதில் பெரும்பாலும் `மீண்டும் முயற்சிக்கவும்` என்ற தலைப்பைக் கொண்டுள்ளது: "இத்தனை வினாடிகளில் மீண்டும் முயற்சிக்கவும்". கண்மூடித்தனமாக காத்திருப்பதை விட இந்த தலைப்பை மதிப்பது மிகவும் துல்லியமானது.
எச்சரிக்கை: நீங்கள் 429 ஐப் பெறும்போது, "அதிக கோரிக்கைகளை அனுப்புவதன் மூலம் கட்டாயப்படுத்துவது" நிலைமையை மோசமாக்கும்; வரம்பு தொடர்ந்து நிரப்பப்படுகிறது மற்றும் கோரிக்கைகள் எதுவும் நிறைவேற்றப்படவில்லை. சரியான பதில் பின்வாங்கல், முடுக்கம் அல்ல. நல்ல செய்தி: பெரும்பாலான உத்தியோகபூர்வ SDKகள் தானாகவே 429ஐ மீண்டும் முயற்சிக்கின்றன மற்றும் சேவையகப் பிழைகள் பேக்ஆஃப் மூலம் - கைமுறையாக நிறுவும் முன் SDKயின் இந்த நடத்தையைப் பயன்படுத்தவும்.
HTTP பிழைக் குறியீடுகளை வகைப்படுத்துதல்
எல்லா தவறுகளும் ஒரே மாதிரியானவை அல்ல. முக்கியமான வேறுபாடு: அதை மீண்டும் முயற்சிக்கலாமா அல்லது கோரிக்கை/அடையாளச் சிக்கலா?
குறியீடு
பொருள்
மீண்டும் முயற்சிக்கலாமா?
சரியான பதில்
400
தவறான கோரிக்கை (வடிவம்/அளவுரு பிழை)
இல்லை
கோரிக்கையை சரிசெய்யவும்; அதையே மீண்டும் அனுப்ப வேண்டாம்
401
அங்கீகாரப் பிழை (விசை தவறானது/காணவில்லை)
இல்லை
விசை/தலைப்பை சரிசெய்யவும்
403
அங்கீகாரம் இல்லை (மாடல்/அம்சத்திற்கான அணுகல் இல்லை)
இல்லை
அனுமதிகள் / நோக்கம் சரிபார்க்கவும்
404
கிடைக்கவில்லை (தவறான மாதிரி ஐடி/எண்ட்பாயிண்ட்)
இல்லை
சரியான மாதிரி ஐடி/முகவரி
429
வேக வரம்பு மீறப்பட்டது
ஆம்
பின்வாங்கல் + மீண்டும் முயற்சிக்கவும்
500
சர்வர் பிழை
ஆம்
பின்வாங்கலுடன் மீண்டும் முயற்சிக்கவும்
529
சர்வர் ஓவர்லோட்
ஆம்
பின்வாங்கலுடன் மீண்டும் முயற்சிக்கவும்
கோல்டன் விதி: 429, 500 மற்றும் 529 தற்காலிகமானவை; திரும்பப் பெறுதலுடன் மீண்டும் முயற்சிக்கப்படுகிறது. 400, 401, 403, 404 கோரிக்கை/அடையாளச் சிக்கல்கள்; மீண்டும் முயற்சி செய்வது அதைத் தீர்க்காது, மேலும் அது முயற்சியை வீணாக்குகிறது. உங்கள் குறியீடு இந்த இரண்டு குழுக்களுக்கு இடையே வேறுபடுத்தி காட்ட வேண்டும்.
படிப்படியாக: நீடித்த அழைப்பு
- கோரிக்கையை சமர்ப்பிக்கவும். வெற்றியடைந்தால், தொடரவும்.
- பிழைக் குறியீட்டை வகைப்படுத்தவும். மீண்டும் முயற்சிக்கலாமா?
- முயற்சி செய்ய முடிந்தால்: மீண்டும் முயற்சிக்கவும்-பிறகு, அதிவேக பேக்ஆஃப் + நடுக்கத்தைப் பயன்படுத்தவும், குறிப்பிட்ட எண்ணிக்கையிலான முறை முயற்சிக்கவும் (எ.கா. அதிகபட்சம் 5).
- முயற்சிக்கவில்லை என்றால்: சரி (வடிவமைப்பு/விசை) மற்றும் நிறுத்து; லூப்பில் அதே தவறான கோரிக்கையை மீண்டும் செய்ய வேண்டாம்.
- விட்டுக் கொடுப்பதைக் கருத்தில் கொள்ளுங்கள். n முயற்சிகளுக்குப் பிறகும் தோல்வியுற்றால், பயனருக்கு கண்ணியமான செய்தியைக் காட்டி நிகழ்வை பதிவு செய்யவும் (கண்காணிப்பு அலகு 11).
# வலுவான அழைப்பு pseudo-codedene = 0repeat: response = request_at() என்றால் பதில் (2^முயற்சி நொடி + நடுக்கம்) உறக்கம்(காத்திரு); முயற்சி += 1; git மீண்டும் என்றால் response.code in [400, 401, 403, 404]: save_error(response); திரும்ப "கோரிக்கை சரி செய்யப்பட வேண்டும்" திரும்ப "நிரந்தர பிழை, பிறகு முயற்சிக்கவும்"
# பயனருக்கு கண்ணியமான கருத்து (மீண்டும் முயற்சிகள் தீர்ந்துவிட்டால்) "நான் இப்போது பிஸியாக இருக்கிறேன், உங்கள் கோரிக்கையைச் செயல்படுத்த முடியவில்லை. விரைவில் மீண்டும் முயற்சிக்கவும் அல்லது உங்கள் கோரிக்கையைச் சேமித்துவிட்டேன், அது தயாரானதும் உங்களைத் தொடர்புகொள்வேன்."
பலவீனமான வரியில் / வலுவான வரியில் (இங்கே: பிழை செய்தி வடிவமைப்பு)
# WEAK (பயனருக்கு மூலப் பிழையைக் காட்டுகிறது)"பிழை 429: rate_limit_error"
# STRONG (பயனர்-நட்பு, உறுதியளிக்கும், செயல்-பரிந்துரைத்தல்) "சிஸ்டத்தில் ஒரு தற்காலிக நெரிசல் இருந்தது. உங்கள் கோரிக்கையை நாங்கள் பாதுகாப்பாகப் பெற்றுள்ளோம், அது தானாகவே மீண்டும் முயற்சிக்கப்படுகிறது. சில நொடிகளில் முடிவு தோன்றவில்லை என்றால், நீங்கள் பக்கத்தைப் புதுப்பிக்கலாம்."
இறுதி பயனருக்கு மூல தொழில்நுட்ப பிழையை வெளிப்படுத்துவது நம்பிக்கையை குறைமதிப்பிற்கு உட்படுத்துகிறது மற்றும் பாதுகாப்பு பாதிப்பாக இருக்கலாம். பிழைகளை உள்நாட்டில் வகைப்படுத்தி, பயனருக்கு அமைதியான, செயல் சார்ந்த செய்தியைக் கொடுங்கள்; பதிவிற்கான தொழில்நுட்ப விவரங்களை மட்டும் எழுதுங்கள்.
மூன்று சிறிய வழக்குகள்
வழக்கு 1 - போக்குவரத்து வெடிப்பில் படகு விபத்துக்குள்ளானது. ஒரு வாடிக்கையாளர் சேவை பாட் பிரச்சார நாளில் 429 டிராஃபிக்கைப் பெற்றது; குறியீட்டில் மறுமுயற்சி எதுவும் இல்லை, ஒவ்வொரு பிழையும் பயனருக்கு நேரடியாக "பிழை"யாகப் பிரதிபலித்தது. அவர்கள் அதிவேக மீட்டெடுப்பு + மீண்டும் முயற்சி செய்த பிறகு; அதே போக்குவரத்தில், கோரிக்கைகள் பல வினாடிகள் தாமதத்துடன் நிறைவேற்றப்பட்டன, பயனர் எந்த பிழையையும் காணவில்லை.
கேஸ் 2 - லூப்பில் 400ஐ முயற்சிக்கிறேன். தவறான மாதிரி ஐடியின் காரணமாக ஒரு ஒருங்கிணைப்பு 404 ஐப் பெறுகிறது, ஆனால் எல்லாப் பிழைகளையும் "நிலையானதாக" கருதி, முடிவில்லாத சுழற்சியில் மீண்டும் முயற்சிக்கிறது; பதிவு வீங்கி, தேவையற்ற சுமை உருவாக்கப்பட்டது. அவர்கள் பிழை வகைப்பாட்டைச் சேர்த்தனர்: 404 நிரந்தரமாகக் கருதப்படுகிறது, லூப் நிறுத்தப்பட்டது மற்றும் மாதிரி ஐடி சரி செய்யப்பட்டது. பாடம்: ஒவ்வொரு தவறையும் மீண்டும் முயற்சிக்காதீர்கள்.
வழக்கு 3 - முன்பக்கத்தில் இருந்து வரம்பை நிர்வகித்தல். தரவு செறிவூட்டல் பணி 429 வரம்பில் தொடர்ந்து இயங்கி வந்தது. அவர்கள் x-ரேட்லிமிட்-மீதமுள்ள தலைப்பைப் பின்தொடர்ந்து, ஒதுக்கீட்டின்படி போக்குவரத்தைத் தடை செய்தனர். எனவே அவர்கள் எந்த 429 களையும் எடுக்காமல், வரம்பிற்குக் கீழே ஒரு நிலையான வேகத்தை வைத்திருந்தனர்; வேலை கணிக்கக்கூடியதாகவும் வேகமாகவும் முடிந்தது.
பொதுவான தவறுகள்
- 429 இல் அதிகரிக்கும் வேகம்: நிலைமையை மோசமாக்குகிறது; பின்வாங்குவதற்கு மாறவும்.
- ஒவ்வொரு பிழையையும் மீண்டும் முயற்சிக்கவும்: 400/401/404 நிரந்தரமானது; மீண்டும் முயற்சி செய்வது வீண்.
- நிலையான காத்திருப்பைப் பயன்படுத்துதல்: மோதலை உருவாக்குகிறது; அதிவேக + நடுக்கம் பயன்படுத்தவும்.
- 'மீண்டும் முயற்சிக்கவும்' புறக்கணித்தல்: வழங்குநரால் குறிப்பிடப்பட்ட நேரத்திற்கு இணங்குவது மிகவும் துல்லியமானது.
- பயனருக்கு மூலப் பிழையை வெளிப்படுத்துதல்: நம்பிக்கையை உலுக்குகிறது, பாதிப்புகளை உருவாக்குகிறது; உள்ளே வகைப்படுத்தவும்.
- வரம்பற்ற முயற்சிகள்: மேல் வரம்பை அமைக்கவும் (எ.கா. 5 முயற்சிகள்); பின்னர் மனதார விட்டுவிடுங்கள்.
ஆழமான: வரிசை, கன்கரன்சி மற்றும் சர்க்யூட் பிரேக்கர்கள்
ஒற்றை ஆசையின் சகிப்புத்தன்மை முதல் படி; அதிக எண்ணிக்கையிலான கோரிக்கைகளை வரம்புகளைத் தாக்காமல் நிர்வகிப்பதே உண்மையான முதிர்ச்சி. மூன்று கருத்துக்கள் இங்கே செயல்படுகின்றன.
வரிசை: கோரிக்கைகளை உடனடியாக அனுப்பாமல் கட்டுப்படுத்தப்பட்ட வேகத்தில் அனுப்ப வரிசையில் வைக்கிறீர்கள். வரிசைப்படுத்துவது திடீர் நெரிசலை சீர்படுத்துகிறது: ஒரே நேரத்தில் 1,000 கோரிக்கைகள் வந்தாலும், வரிசை அவற்றை வரம்பிற்குக் குறைவான விகிதத்தில் வெளியிடும். இந்த வழியில் நீங்கள் 429 ஐ தடுக்கிறீர்கள், பின்னர் அதை சரிசெய்வது பற்றி நீங்கள் கவலைப்பட வேண்டியதில்லை.
ஒத்திசைவு வரம்பு: ஒரே நேரத்தில் "காற்றில்" எத்தனை கோரிக்கைகள் உள்ளன என்பதை நீங்கள் வரம்பிடுவீர்கள். வரம்பற்ற இணை கோரிக்கைகள் RPM மற்றும் TPM வரம்புகளை விரைவாக நிரப்புகின்றன. ஒரு நியாயமான ஒத்திசைவு உச்சவரம்பு (எ.கா. 10 ஒரே நேரத்தில் கோரிக்கைகளுக்கு மேல் இல்லை) இரண்டும் வரம்புகளைப் பராமரிக்கிறது மற்றும் கணினியை கணிக்கக்கூடியதாக ஆக்குகிறது.
சர்க்யூட் பிரேக்கர்: வழங்குநர் தொடர்ந்து 500/529 ஐத் திருப்பி அனுப்பினால், ஒவ்வொரு கோரிக்கையையும் கடுமையாக முயற்சிப்பதற்குப் பதிலாக, நீங்கள் சிறிது நேரம் "சுற்றை உடைத்து" மற்றும் கோரிக்கையை அனுப்பாமல் விரைவாக தோல்வியடைகிறீர்கள். காத்திருப்புக்குப் பிறகு, சர்க்யூட்டை மீண்டும் இயக்கி முயற்சிக்கவும். தற்காலிக வழங்குநர் தோல்வியுற்றால் உங்கள் கணினி செயலிழப்பதை இந்த முறை தடுக்கிறது.
இந்த மூன்றும் சேர்ந்து, ஒரு ஒற்றை அழைப்பின் மறுமுயற்சி தர்க்கத்திற்கு அப்பால் கணினி-நிலை பின்னடைவை நிறுவுகின்றன. சிறிய அளவில், SDK இன் தானியங்கி மறு முயற்சி போதுமானது; அளவு வளரும்போது, வரிசைப்படுத்தல், ஒத்திசைவு மற்றும் சர்க்யூட் பிரேக்கர் ஆகியவை இன்றியமையாததாகிறது. அவை அனைத்தும் ஒரே பொதுவான குறிக்கோளைக் கொண்டுள்ளன: பயனருக்கு ஒரு தற்காலிக சிக்கலை ஒரு செயலிழப்பாக அல்ல, ஆனால் சில நொடிகளின் கண்ணுக்கு தெரியாத தாமதமாக பிரதிபலிக்கிறது.
சுருக்கமாக
வேக வரம்புகளை (RPM/ITPM/OTPM) மீறினால் 429 திரும்பும்; இது ஒரு தற்காலிகப் பிழை மற்றும் மறுமுயற்சிக்குப் பிறகு மற்றும் அதிவேக பேக்ஆஃப் + நடுக்கம் ஆகியவற்றைப் பயன்படுத்தி மீண்டும் முயற்சிக்கப்படும். 500 மற்றும் 529 ஆகியவை தற்காலிகமானவை; 400/401/403/404 ஒரு கோரிக்கை/அடையாளச் சிக்கலாகும், மீண்டும் முயற்சி செய்வதன் மூலம் அதைத் தீர்க்க முடியாது. ஒரு வலுவான ஓட்டம் இந்த இரண்டு குழுக்களாக பிழைகளை பிரிக்கிறது, குறிப்பிட்ட எண்ணிக்கையிலான முறை முயற்சிக்கிறது, முன்பக்கத்தில் இருந்து வரம்பை கண்காணிக்கிறது மற்றும் பயனருக்கு அமைதியான செய்திகளைக் காட்டுகிறது.
விண்ணப்ப பணி
உங்கள் ஒருங்கிணைப்பைக் கவனியுங்கள். (1) நீங்கள் சந்திக்கக்கூடிய பிழைக் குறியீடுகளைப் பட்டியலிட்டு அவற்றை "மீண்டும் முயற்சி செய்யக்கூடியது / நிரந்தரமானது" என்று பிரிக்கவும். (2) உங்கள் அதிவேக இழுவைத் திட்டத்தை எழுதவும் (ஆரம்ப பிடிப்பு, குணகம், தொப்பி, நடுக்கம்). (3) மறுமுயற்சிக்குப் பின் தலைப்பை எவ்வாறு பயன்படுத்துவது என்பதைக் குறிப்பிடவும். (4) மறுமுயற்சிகள் தீர்ந்துவிட்டால், பயனருக்குக் காட்டப்படும் கண்ணியமான செய்தியை எழுதவும்.
சரிபார்ப்பு பட்டியல்
- [ ] RPM/ITPM/OTPM வரம்புகள் மற்றும் 429 ஐ என்னால் விளக்க முடியும்.
- [ ] நான் அதிவேக பின்வாங்கல் + நடுக்கம் + மறு முயற்சிக்குப் பிறகு தர்க்கத்தைப் பயன்படுத்த முடியும்.
- [ ] நான் பிழைக் குறியீடுகளை மீண்டும் முயற்சிக்கக்கூடியது/நிரந்தரமானது என வகைப்படுத்த முடியும்.
- [ ] நான் ஒவ்வொரு தவறும் முயற்சி செய்ய கூடாது என்று எனக்கு தெரியும்.
- [ ] மூலப் பிழைக்குப் பதிலாக, பயனருக்கு அமைதியான, செயல் சார்ந்த செய்தியைக் காட்ட முடியும்.