Акценти
Отговорите за превишена квота вече връщат HTTP 429 с хедър Retry-After, съвпадайки с това, което OpenAI, GitHub и Cloudflare изпращат. Страницата с цените получи ред за честотна лента (всеки публичен план е неограничен). А заявките, които искат exitCountries на план без гео-таргетиране, вече получават чист 403, който назовава параметъра и поправката.
Какво ново
Лимитите на квотата вече говорят HTTP 429, а не 402
Ако достигнете лимит на плана (кредити или честотна лента), отговорът е 429 Too Many Requests с Retry-After на всеки отговор и resets_at в тялото, сочещо към края на вашия период на фактуриране. Полето reason ви казва кой лимит сте достигнали (plan_limit_credits или plan_limit_bandwidth), така че да не се сблъсква с лимитите на скоростта за минута.
Защо промяната? 402 звучи правилно ("Payment Required"), но на практика това е начинът, по който Stripe съобщава за неуспешни плащания и няколко HTTP клиента и проксита се справят неправилно с него. OpenAI, GitHub, Twilio и Cloudflare отхвърлят превишените квоти с 429 и отделен код за грешка. Следването на стадото тук е правилният ход: всяка библиотека за повторни опити на планетата вече знае какво да прави с нашите отговори.
Стойността Retry-After е ограничена до 24 часа за хората, които спят и опитват отново. Ако искате реалното време за нулиране, прочетете resets_at от JSON тялото.
Честотна лента на страницата с цените: неограничена
/prices получи ред за честотна лента в матрицата за сравнение. Всеки публичен план предлага неограничена честотна лента и матрицата вече го казва на глас. Това е от онези неща, които не ви трябват, докато потенциален клиент не попита и не можете да намерите числото. Сега е на страницата.
Персонализираните планове, които ограничават честотната лента, показват своята GB цифра в същия ред.
гео-таргетирането се ограничава с правилна грешка
Ако заявка изпрати exitCountries, докато планът не включва функцията за гео-таргетиране, отговорът е 403 със съобщение, назоваващо параметъра и как да го поправите. Преди заявката минаваше, сякаш гео-таргетирането беше разрешено. Сега се проваля шумно на вратата.
Заявките без exitCountries са недокоснати. Това се задейства само когато действително поискате функцията.
Малки поправки в таблото за управление на лимити и фактуриране
Три поправки за качество на живот:
- Раздел Лимити. Запазеният под-раздел (Общ преглед / API ключове / Лимити и функции) се възстановява преди рисуване, така че вече не виждате проблясък на грешен раздел при презареждане.
- API ключове. Полето за търсене използва каноничния модел за търсене вместо голо въвеждане.
- Фактуриране. Мета редовете под Метод на плащане вече се изобразяват с правилния стил (преди това падаха без стил).
Под капака
Режимите за прилагане на лимити на плана вече могат да се превключват на живо. Всеки от шестте лимита на равнината на данните (паралелност за продукт, скорост за минута, браузър на ден, кредити, честотна лента, функции) плюс проверката за създаване на ключ в равнината на управление може да се превключва между изключено, сигнал и прилагане от панел с настройки, който нашият екип контролира. Без преразпределение. Фоново опресняване анкетира настройката на всеки 60 секунди и горещият път остава синхронен.
Защо това има значение за вас? Когато даден лимит не работи правилно в production среда, можем да го върнем назад за минута, вместо да пускаме нов код. Това също ни позволява да налагаме ограниченията постепенно за всеки лимит, наблюдавайки какво прави реалният трафик на всяка стъпка. Режимът signal записва събитието, без да блокира, а enforce включва 429 или 403 response. Искахме междинната стъпка да бъде първокласна функция, а не просто авариен превключвател.
Числа
Retry-Afterмаксимум за отхвърляния по квота: 24 часа (реално време за нулиране вresets_at)- Интервал за извличане на runtime настройки: 60 секунди
- Публични планове с неограничен bandwidth: всички
Ограничителят на планове е основната тема от месец насам. Следва: прилагане на първите лимити (кредити и паралелни заявки за продукт изглеждат като естествената първа двойка), плюс предупреждения по имейл, след като фазата за изпращане бъде пусната.