Skip to content

Instantly share code, notes, and snippets.

@nepalez
Created March 1, 2019 14:54
Show Gist options
  • Save nepalez/65875c2c0b8686ce28c00cc4217faa2e to your computer and use it in GitHub Desktop.
Save nepalez/65875c2c0b8686ce28c00cc4217faa2e to your computer and use it in GitHub Desktop.
Скачивание заказов и синхронизация
## События
[Первым коммитом][order_received_event] я добавил новое событие `orderReceived`. Событие хранит **сырой** заказ (новый или ранее зарегистрированный -- не важно) скачанный с ибея.
Основная идея тут вот в чем. Когда мы скачиваем заказы, их может быть пачка. Я проверил через консоль -- у пользователя с наибольшим числом заказов, за сутки их бывает около 300 штук.
Сохранять всю эту тонну информации в модель `Order` и связанные (строки, посылки, адреса) -- это тяжело и больно. Вместо этого мы быстро генерируем события с тем, чтобы их потом обработать и создать/обновить заказы.
Ивент -- надежнее, чем таска в сайдкике, потому что по завершении скачивания (см. ниже) мы сдвигаем отметку времени, до которой скачали обновления. Если мы какую-то из задачек потеряем, то больше мы этот заказ можем и не увидеть, т.к. будем скачивать только более поздние.
В отличие от сайдкика, ивенты -- хранимые. Т.е. нам _гарантировано_, что если мы сдвинули время в аккаунте, то все обновленные заказы лежат в стопке ивентов, ждущих обработки на нашей стороне.
[order_received_event]:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment