Size: a a a

Clojure — русскоговорящее сообщество

2020 February 25

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
с нужным для тебя хэндлингом ошибок
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
(что если не отправка нотификации зафейлилась? попробовать через минуту? забить и переходить к следующему триггеру? у тебя полный контроль и ответ зависит от бизнес-логики)
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Andrew Rudenko
ох. в твоем первоначальном варианте:

1. ты мапишь скедулинг логику на реляционную алгебру
2. у тебя нет никакого контроля на статусом выполнения. что если выбиралка юзеров зафейлилась на середине? отправить первой половине опять?
1. Где тут что-нибудь про реляционную алгебру?
https://t.me/clojure_ru/109291

2. Статусы отправки не имеют отношения к моему вопросу.
Плюс выборка пользователей и отправка уведомлений - две независимые операции. Отправка сама по себе ничего не знает о логике определения кому отправлять
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Tim Plotnikov
Мы можем сгенерировать все триггеры сразу, потому что их не бесконечное кол-во)
Максимум 23 на пользователя при шаге в 1 час и в два раза больше при шаге в 30 минут)
Бесконечное. Почему ты сутками ограничился?
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Andrew Rudenko
в транзакции
О каких транзакциях идёт речь? А если у меня reddis/mongo/обычный файл
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Tim Plotnikov
О каких транзакциях идёт речь? А если у меня reddis/mongo/обычный файл
то ты либо имеешь те же гарантии (редис), либо можешь уменьшать гарантии
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Sergey Trofimov
Бесконечное. Почему ты сутками ограничился?
Потому что часы во всех сутках одинаковые) 0-23
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
> Плюс выборка пользователей и отправка уведомлений - две независимые операции.

ну что б их сделать независимыми нужно прям усилия приложить — например, заимплементив очередь между ними. но самое главное оно скорее всего не нужно
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Tim Plotnikov
Потому что часы во всех сутках одинаковые) 0-23
завтра у тебя появится требовавание к "только по будням"
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Andrew Rudenko
завтра у тебя появится требовавание к "только по будням"
Тогда я изменю условие фильтрации?
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Короче я понял о чем вы говорили с генерацией следующей даты срабатывания каждый раз. Типа, в случае ошибки отправки ты можешь зашедулить следующую отправку не в обычное время, а с учетом ошибки или другой логики
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Это конечно имеет смысл
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
да не только в случае ошибки отправки
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
ну вот ты выбрал 1000 пользователей своей фуночкой
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
начал отправлять
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
отправил 500
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
и грохнулся
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
что дальше? отправить еще раз первым 500? забыть про следующие 500?
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Tim Plotnikov
Тогда я изменю условие фильтрации?
тогда ты все к хренам перепишешь )
источник
2020 February 26

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Tim Plotnikov
Если честно, попахивает возможными ошибками (пока не могу сказать какими, просто gut feeling).
Да и чувствовать я себя буду гораздо спокойнее, если моя логика не будет зависеть от того, сколько раз выполнилась функция)
я фиг сколько лет назад делал нечто подобное и очень похожим способом - работало долго и надежно.
плюс в том, что все ключевые моменты видны на одном экране и просмотрев их хорошо можно не опасаться разных сюрпризов.
источник