Retry ETTN creation on Nova Poshta rate limit instead of failing
Checkbox relays Nova Poshta's "To many requests" (20000401501) as a 4xx third_party.generic error, not a 429, so bursts of receipt requests ended up as failed receipts. Such responses are now CheckboxRateLimitedError: the receipt stays pending and the worker job is retried with arq.Retry after the "Try again after N seconds" delay plus backoff. NP timeouts relayed the same way are treated as unavailable (unknown outcome). The HTTP client also sends Checkbox requests one at a time with a CHECKBOX_MIN_REQUEST_INTERVAL_MS pause and signs the cashier in once for concurrent jobs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -69,6 +69,9 @@ class Settings(BaseSettings):
|
||||
checkbox_base_url: str = "https://api.checkbox.ua"
|
||||
checkbox_client_name: str = "lux_fiscal"
|
||||
checkbox_client_version: str = "0.1.0"
|
||||
# Пауза между запросами к Checkbox из одного процесса: при создании ЕТТН
|
||||
# Checkbox ходит в API Новой Почты, а та отвечает «To many requests» на частые вызовы.
|
||||
checkbox_min_request_interval_ms: int = 1000
|
||||
# Стаб вместо реального Checkbox: ЕТТН работает только на боевой кассе,
|
||||
# поэтому локально весь цикл прогоняется через стаб. В проде запрещено.
|
||||
checkbox_use_stub: bool = False
|
||||
|
||||
Reference in New Issue
Block a user