Каталог в реальном времени
Фид обновляется по расписанию (по умолчанию — раз в час). Если остатки и цены меняются чаще, дополните фид API индексации.
- Фид — источник состава каталога. Новые товары, названия, картинки, характеристики приходят только фидом. Оставьте его по расписанию (1–4 часа).
- API — для быстрых изменений. Подпишитесь на события учётной системы «изменился остаток» / «изменилась цена» и отправляйте их пачками до 250 товаров.
- Фид должен быть актуальным. Следующая индексация перезапишет значения из API данными фида — поэтому выгрузка должна отдавать те же цены и остатки.
import requests, time
API = "https://web4.searchbooster.io/api/v1/{uuid}/product/update"HEADERS = {"Authorization": "Bearer <API_KEY>"}
def push(changes): """changes: [{"id": "627834", "available": False, "count": 0, "price": 990.0}, …]""" for i in range(0, len(changes), 250): batch = [{"id": c["id"], "fields": {k: v for k, v in c.items() if k != "id"}} for c in changes[i:i + 250]] for attempt in range(3): r = requests.post(API, json={"offers": batch}, headers=HEADERS, timeout=15) if r.status_code < 500: break time.sleep(2 ** attempt) r.raise_for_status() body = r.json() if body.get("status") == "warning": print("нет в индексе:", body["missing_offers"])