Перейти к содержимому

Каталог в реальном времени

Фид обновляется по расписанию (по умолчанию — раз в час). Если остатки и цены меняются чаще, дополните фид API индексации.

  1. Фид — источник состава каталога. Новые товары, названия, картинки, характеристики приходят только фидом. Оставьте его по расписанию (1–4 часа).
  2. API — для быстрых изменений. Подпишитесь на события учётной системы «изменился остаток» / «изменилась цена» и отправляйте их пачками до 250 товаров.
  3. Фид должен быть актуальным. Следующая индексация перезапишет значения из API данными фида — поэтому выгрузка должна отдавать те же цены и остатки.
sync_stock.py
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"])