Пайдалар:
- Ылдамдык чектөөлөрүн (RPM/ITPM/OTPM) жана 429 катасын чечмелей алат
- Экспоненциалдык артка кайтарууну жана кайра аракет кылууну ишке ашырат
- Жалпы HTTP ката коддорун туура классификациялайт жана иштетет (400/401/429/500/529)
Өндүрүш чөйрөсүндө эч кандай API ар дайым кемчиликсиз жооп бербейт. Кээде сиз суроо-талаптарды өтө тез жөнөтөсүз жана чекти басып кетесиз; кээде сервер убактылуу бош эмес; Кээде сиздин өтүнүчүңүз башынан туура эмес болуп калат. Катуу интеграцияны ышкыбоздук аракеттен айырмалап турган нерсе, ал бул кырдаалдарды алдын ала жана автоматтык түрдө чечет. Бул бөлүмдө сиз ылдамдык чектөөлөрү (RPM/ITPM/OTPM), 429 катасы, экспоненциалдык артка кайтаруу менен кайра аракет кылуу жана жалпы HTTP ката коддорунун туура классификациясы жөнүндө биле аласыз. Максаты: колдонуучу аны эч качан байкабай тургандай бекем агымды түзүү.
Ылдамдык чектөөлөр деген эмне?
Провайдер которгучтун берилген убакыттын ичинде канча жумуш аткара аларын чектейт. Бул коргоо; Бул инфраструктураны да, сизди да күтүлбөгөн чыгымдын жарылуусунан коргойт. Чектөөлөрдүн үч жалпы түрү бар:
- RPM (Requests Per Minute): Мүнөтүнө суроо-талаптардын саны.
- ITPM (Input Tokens Per Minute): Бир мүнөттө иштетиле турган киргизүү белгиси.
- OTPM (Output Tokens Per Minute): Мүнөтүнө чыгарыла турган чыгаруу белгиси.
Эгер сиз бул чектөөлөрдүн кайсынысынан болбосун ашып кетсе, камсыздоочу өтүнүчтү четке кагат жана 429 ката кодун кайтарат. Чектөөлөр жалпысынан сиздин каттоо эсебиңиздин деңгээлине (деңгээлине) жараша өзгөрүп турат жана убакыттын өтүшү менен көбөйүшү мүмкүн.
Кеңеш: Жооптун аталыштарынан чекке жакындап калганыңызды көрө аласыз. Көпчүлүк провайдерлер сиздин калган квотаны x-ratelimit-remaining-* сыяктуу аталыштар менен кабарлашат. Бул баалуулуктарды көзөмөлдөө жана алдыдагы трафикти токтотуу - 429 албай туруп, көйгөйдү алдын алуунун эң жетилген жолу.
429 жана Экспоненциалдык Retracement
429 (чен чеги) убактылуу жана кайра аракет кылынуучу ката. Туура жооп - суроо-талапты бир аз күтүп, кайра аракет кылуу. Бирок дайыма күтүү жетиштүү эмес; Эгер баары бир эле учурда кайра аракет кылса, чекке кайра жетет. Чечим экспоненциалдык артка кетүү: күтүү убактысын ар бир ийгиликсиз аракет менен экспоненциалдуу көбөйтүү.
# Экспоненциалдык артка кайтуу логикалык сыноо 1 → 429 → күтүү 1 сек сыноо 2 → 429 → күтүү 2 сек сыноо 3 → 429 → күтүү 4 сек сынамык 4 → 429 → 8 сек күтүү (+ кичинекей кокустук "титиреп")... баш тартуу жана эң көп N сыноодон кийин кабарлоо
Буга бир аз кокустук (жыт) кошуу, бир эле учурда кайра аракет кылуу аракетинде сурамдардын кагылышынын алдын алат. Кошумчалай кетсек, 429 жообу көп учурда "кайра аракет кылуудан кийин" аталышын камтыйт: "ушунча секунданын ичинде кайра аракет кылыңыз". Бул наамды урматтоо сокур күтүүгө караганда туурараак.
Абайлаңыз: 429 алганыңызда, "көбүрөөк суроо-талаптарды жөнөтүү менен аны мажбурлоо" абалды ого бетер начарлатат; Лимит толтурууну улантууда жана эч кандай сурамдар өтпөйт. Туура жооп - тездетүү эмес, артка чегинүү. Жакшы жаңылык: көпчүлүк расмий SDK'лар автоматтык түрдө 429 жана сервер каталарын кайталап көрүшөт — SDKнын бул жүрүм-турумун кол менен орнотуудан мурун колдонуңуз.
HTTP ката коддорун классификациялоо
Ар бир ката бирдей эмес. Критикалык айырма: кайра аракет кылса болобу же бул суроо/өздүк маселесиби?
Code
Мааниси
Кайра аракет кылса болобу?
туура жооп
400
Жараксыз суроо (формат/параметр катасы)
жок
Өтүнүчтү оңдоо; кайра эле жибербе
401
Аутентификация катасы (ачкыч жараксыз/жок)
жок
Ачкычты/аталды оңдоо
403
Авторизация жок (моделге/функцияга кирүү жок)
жок
Уруксаттарды/көлөмдү текшерүү
404
Табылган жок (туура эмес модель ID/аягы)
жок
Туура модель ID/дареги
429
Ылдамдык чектен ашты
Ооба
Артка чегинүү + кайра аракет кылуу
500
Сервер катасы
Ооба
Кайталап көрүңүз
529
Сервер ашыкча жүктөлгөн
Ооба
Кайталап көрүңүз
Алтын эреже: 429, 500 жана 529 убактылуу; Бул кайра алуу менен аракет кылынат. 400, 401, 403, 404 - суроо-талап/өздүк маселелери; Кайра аракет кылуу аны чечпейт жана аракетти текке кетирет. Сиздин кодуңуз бул эки топту айырмалап турушу керек.
Кадам кадам: Туруктуу чалуу
- Өтүнүчтү тапшырыңыз. Эгер ийгиликтүү болсо, улантыңыз.
- Ката кодун классификациялаңыз. Кайра аракет кылса болобу?
- Эгер аракет кылса: кайра аракет кылуудан кийин ээрчиңиз, экспоненциалдык артка кайтаруу + життерди колдонуңуз, чектелген санда аракет кылыңыз (мисалы, 5 максимум).
- Эгерде аракет кылбаса: Fix (формат/ачкыч) жана токтотуу; Ошол эле ката өтүнүчтү циклде кайталабаңыз.
- Баш тартууну ойлон. Эгерде n аракеттен кийин дагы эле ийгиликсиз болсо, колдонуучуга сылык билдирүү көрсөтүп, окуяны каттаңыз (көзөмөл бирдиги 11).
# Күчтүү чалуу pseudo-codenene = 0repeat: answer = request_at() if answer.success: [429, 500, 529] ичинде answer.code болсо жооп кайтарыңыз жана < 5 аракет кылыңыз: күтө туруңуз = retry_after ?? (2^ try sec + jitter) уктоо(күтүү); аракет += 1; git кайра [400, 401, 403, 404] ичинде answer.code болсо: save_error(response); "суроо оңдолушу керек" кайтаруу "туруктуу ката, кийинчерээк аракет кылуу"
# Колдонуучуга сылык пикир (кайталоо аракети түгөнүп калганда) "Учурда мен бош эмесмин, суранычыңызды иштете алган жокмун. Бир аздан кийин кайталап көрүңүз, болбосо суранычыңызды сактап койдум, ал даяр болгондо сизге жооп берем."
Алсыз тездик / Күчтүү тездик (бул жерде: ката билдирүү дизайны)
# WEAK (колдонуучуга чийки катаны көрсөтөт)"Ката 429: ылдамдык_лимитин_катасы"
# КҮЧТҮҮ (колдонуучуга ыңгайлуу, ишендирүүчү, иш-аракетти сунуштоо) "Тутумда убактылуу тыгын пайда болду. Сурамыңызды коопсуз кабыл алдык жана ал автоматтык түрдө кайра аракет кылып жатат. Эгер натыйжа бир нече секунданын ичинде көрүнбөсө, баракты жаңыртсаңыз болот."
Акыркы колдонуучуга чийки техникалык катаны ачып берүү ишенимди кетирет жана коопсуздуктун алсыздыгы болушу мүмкүн. Каталарды ички категорияга бөлүңүз жана колдонуучуга тынч, аракетке багытталган билдирүү бериңиз; жөн гана жазуу үчүн техникалык маалымат жаз.
Үч мини Case
1-жагдай - Кайык жол жарылуусунан кулап түшкөн. Кардарларды тейлөө боту өнөктүк күнү 429 трафикти алды; Коддо кайра аракет болгон эмес, ар бир ката түз эле колдонуучуга "ката" катары чагылдырылган. Алар экспоненциалдык retracement + кайра аракет кылууну кошушкан; ошол эле трафик менен, суроо-талаптар бир нече секунд кечигүү менен өтүп, колдонуучу эч кандай каталарды көргөн жок.
2-жагдай - циклде 400 аракет кылуу. Моделдин идентификатору жараксыз болгондуктан, интеграция 404 алып жатты, бирок бардык каталарды "өтмө" катары карап, чексиз циклде кайра аракет кылып жатты; Журнал шишип, керексиз жүк пайда болду. Алар ката классификациясын кошушту: 404 туруктуу деп эсептелет, цикл токтойт жана моделдин идентификатору оңдолот. Сабак: Ар бир катаны кайра кайталаба.
3-жагдай - чекти алдыңкы тараптан башкаруу. Маалыматты байытуу иши тынымсыз 429 чегинде иштеп турган. Алар x-ratelimit-калган башты ээрчип, квота боюнча трафикти азайтышты. Ошентип, алар эч кандай 429s албай, чектен бир аз төмөн туруктуу темпти сактап; Жумуш алда канча тез жана алдын ала аткарылды.
Жалпы каталар
- 429 ылдамдыгын жогорулатуу: кырдаалды начарлатат; Артка кайтууга өтүңүз.
- Ар бир катаны кайталоо: 400/401/404 туруктуу; Кайра аракет кылуу текке кетет.
- Туруктуу күтүүнү колдонуу: Кагылышууну жаратат; Экспоненциалдык + життерди колдонуңуз.
- "Кайра аракет кылуудан кийин" этибарга албоо: Провайдер белгилеген убакытты сактоо эң туура.
- Колдонуучуга чийки катаны ачып берүү: ишенимди солкулдатат, алсыздыктарды жаратат; Ичинде классификация.
- Чексиз кайталоо: Жогорку чекти коюу (мисалы, 5 жолу аракет); анда ырайымдуулук менен баш тартуу.
Тереңирээк: кезекке туруу, параллелдүүлүк жана автоматтык өчүргүчтөр
Жалгыз каалоого чыдамкайлык биринчи кадам; Чыныгы жетилгендик - бул көп сандагы суроо-талаптарды чектөөлөрдү сүзбөй башкаруу. Бул жерде үч түшүнүк пайда болот.
Кезек: Сурамдарды дароо эмес, башкарылган темпте жөнөтүү үчүн кезекке коёсуз. Кезек күтүлбөгөн жерден трафиктин жарылуусун жеңилдетет: 1000 суроо-талап дароо келсе да, кезек аларды чектен төмөн ылдамдыкта бошотот. Ушундай жол менен сиз 429ду алдын аласыз, андан кийин аны оңдоо жөнүндө кабатырланбайсыз.
Кошумча чектөө: Сиз бир эле учурда канча сурамдын "абада" болушун чектейсиз. Чексиз параллелдүү сурамдар RPM жана TPM чектерин тез толтурат. Акылга сыярлык параллелдүү лимиттер (мисалы, 10дон ашык эмес бир убактагы суроо-талаптар) чектөөлөрдү сактайт жана системаны алдын ала айтууга болот.
Автоматтык өчүргүч: Эгерде провайдер 500/529 кайтарып бере берсе, ар бир суроо-талапты чечкиндүү аракет кылуунун ордуна, сиз бир аз убакытка "схеманы бузуп" жана сурамды эч качан жөнөтпөстөн тез эле аткарбай каласыз. Бир аз күткөндөн кийин, схеманы кайра күйгүзүп, аракет кылыңыз. Бул үлгү провайдер убактылуу иштебей калган учурда тутумуңуздун кыйроосунан сактайт.
Бул үчөө биргелешип, бир чалуунун кайталоо логикасынан тышкары система деңгээлиндеги ийкемдүүлүктү белгилешет. Кичинекей масштабда SDKнын автоматтык түрдө кайра аракети жетиштүү; Масштаб чоңойгон сайын кезек, параллелдүүлүк жана автоматтык өчүргүч ажырагыс болуп калат. Алардын бардыгы бирдей максатка ээ: колдонуучуга убактылуу көйгөйдү кыйроо катары эмес, бир нече секунданын көзгө көрүнбөгөн кечигүү катары чагылдыруу.
Кыскача айтканда
429 ылдамдык чегинен (RPM/ITPM/OTPM) ашканда кайтарат; Бул убактылуу ката жана кайра аракет кылуу жана экспоненциалдык артка кайтаруу + життерди колдонуу менен кайра аракет кылынат. 500 жана 529 да убактылуу; 400/401/403/404 суроо-талап/иденттикти аныктоо маселеси жана аны кайра аракет кылуу менен чечүү мүмкүн эмес. Күчтүү агым каталарды бул эки топко бөлүп, бир нече жолу аракет кылат, чекти алдыңкы тараптан көзөмөлдөйт жана колдонуучуга тынч билдирүүлөрдү көрсөтөт.
Колдонмо тапшырмасы
Интеграцияңызды карап көрүңүз. (1) Ката коддорун тизмектеңиз жана аларды "кайталануучу/туруктуу" деп бөлүңүз. (2) Экспоненциалдык артка тартуу планыңызды жазыңыз (баштапкы кармоо, коэффициент, капкак, життер). (3) Кайра аракет кылуунун башын кантип колдонууну көрсөтүңүз. (4) Кайталоо аракети түгөнгөндө колдонуучуга көрсөтүлө турган сылык билдирүүнү жазыңыз.
текшерүү тизмеси
- [ ] Мен RPM/ITPM/OTPM чектөөлөрүн жана 429 түшүндүрө алам.
- [ ] Мен экспоненциалдык чегинүү + життер + кайра аракет кылуу логикасын колдоно алам.
- [ ] Мен ката коддорун кайталануучу/туруктуу деп классификациялай алам.
- [ ] Ар бир катаны сынабашыбыз керек экенин билем.
- [ ] Таза катанын ордуна, мен колдонуучуга тынч, аракетке багытталган билдирүүнү көрсөтө алам.