Ръководства
Синхронизиране на наличността
Два потока поддържат локалния каталог актуален: /cars за активната наличност и /archived-lots за обявите, които вече ги няма.
- 1
Изградете първоначалния каталог
Обходете страниците на
/cars, като използватеsimple_paginate=1,когато общият брой не ви трябва. Запазвайте ID на автомобила, източника, идентификаторите на лота и времето на обновяване. - 2
Събирайте обновяванията
Проверявайте
/cars?minutes=60 за едночасов прозорец или изберете прозорец според интервала си на проверка (1–4320 минути). Четете всички страници с едни и същи филтри. - 3
Обработвайте архивните обяви
Проверявайте
/archived-lots?minutes=60 в съответстващ прозорец и отбелязвайте този лот от източника като неактивен. Един архивен лот не означава, че всички обяви на автомобила са неактивни. - 4
Прилагайте промените идемпотентно
Правете upsert по идентификатори. Използвайте припокриващи се прозорци и записаното време, за да понасяте повторни опити и дубликати.
- 5
Сверявайте периодично
Плъзгащият се прозорец не е надежден курсор. След прекъсване над 72 часа изградете наново активната наличност, вместо да разчитате на инкременталния поток.
Архивирайте на ниво лот по lot_id. Един автомобил може да има други активни лотове. По-старите отговори на архива съдържат скаларни bid/sale_date, а по-новите използват {value, updated_at}. Не приемайте старото bid за потвърдена окончателна продажна цена.
Работещ пример на Python за сървъра: обхожда страниците на двата потока, записва или обновява автомобили и лотове в SQLite и архивира само засегнатия лот. Използва ключ от средата на сървъра, таймаути, ограничени повторни опити и контролна точка на последната успешна синхронизация. Инсталирайте requests. Задайте AUCTIONS_API_KEY на сървъра и изпълнете веднъж python sync_auction_cars.py --initial; планирайте следващите изпълнения без --initial. Размер на страниците по подразбиране: cars=50, архив=100. С Unlimited можете да зададете AUCTIONS_CARS_PER_PAGE=1000 и AUCTIONS_ARCHIVE_PER_PAGE=1000. Пускайте само един worker наведнъж (заключване в планировчика); адаптирайте съхранението в SQLite и съгласувайте пропуски над 72 часа. Примерът не превръща променящия се поток във фиксирана моментна снимка.