Anonymous
но другого применения пока не вижу
Pavel
но другого применения пока не вижу
Вот пример:
Отправляем запрос в банк на привязку карты, через batch цикличное задание на проверку статуса, в then меняем у пользователя флаг о том что привязка в процессе, в finally отправляем запрос в банк на получение данных карт, и дергаем флаг на то что карта была успешно привязана, в catch дергаем флаг об ошибке привязки
Pavel
Элементарно же вроде
Pavel
catch - задание было не успешно например выпал эксепшен или количество попыток закончилось
Pavel
then - задачи отправились в очередь но еще не выполнены
Anonymous
Окей, задачи ж сами по себе могут быть с несколькими попытками
Pavel
finally - все задачи выполнены, прям все
Pavel
Pavel
Ну допустим пусть один джоб будет цикличным, а второй джоб будет отправлять данные в какой нибудь DWH
Pavel
finally выпадет только тогда, когда оба джоба закончили работу
Павел
вы помеделнее, я фотографирую
Anonymous
ну так джоба сама может фейлиться, если привязки нет, следовательно она рестартанет через N минут. а если проверка прошла, успешно завершится и сменит статус юзера
Pavel
Иначе нам например в том же двх нужно удалить данные если статус привязки мы так и не получили
Anonymous
я к тому, что они дают удобство, но ничего кардинально нового не приносят
Pavel
Pavel
Pavel
технически это не костыль
Pavel
Но это не очень удобно
Pavel
Как и обработка собственно количества повторений
Anonymous
согласен, сейчас код самой джобы можно сильно сократить
Pavel
Pavel
Потому что код джоба хранится в БД
Pavel
Раньше для серьезных джобов делали сервис отдельно, сейчас можно обойтись без него
Anonymous
там разве сам код хранится?
Pavel
Pavel
Посмотри в табличку))
Anonymous
хуйня так-то 🙂
Anonymous
хотя я понимаю, зачем это сделано
Anonymous
у нас в проекте мы храним ссылку (класс) и входные параметры, а воркер код подымает из файлов
Pavel
хуйня так-то 🙂
Нет, для этого тоже есть объяснение, например у нас на проекте список джобов в очереди может достигать не одной тысячи, это не приоритетные джобы, но джобы которые должны выполнится, релизится новая версия где код джоба поменялся, и в итоге эта тысяча джобов в очереди может поломать приложение
Pavel
А так у них зафиксирован код, в момент добавления в очередь
Anonymous
хотя нет, теперь не понимаю. потому что это не решает никакой проблемы
Anonymous
воркер все так нужно ребутать после деплоя
Pavel
Это наоборот, очень правильный полход, с редисом например также, но там не так критичен объем данных по этому на объем кода в джобе можно забить
Pavel
Anonymous
Anonymous
зафейлятся скорее всего - да, но могут и данные поломать
Anonymous
API проекта - это всмысле интерфейсы в самом проекте, не какое-то стороннее апи.
Pavel
Чет не могу вытащить из головы пример) Короче так надо и это очень бест практика, но бест практика из разряда когда ты делаешь какую то пиздецовую ошибку и думаешь "Так вот почему это тут сделано так, а не иначе" )))
Anonymous
Ну спорно про так надо. Так надо в ларавел, потому что Тейлор так сказал 🙂
Anonymous
Я говорю, что у нас своя реализация и у нас надо по другому, потому что наступали на грабли
Anonymous
так тут получается двойная работа
Anonymous
воркер на момент запуска ведь тоже кеширует весь код
Anonymous
и у тебя в случае обновления получается полная хуйня: код сервера один, воркер работает с другой версией, а базе лежит вообще хрен пойми что
Pavel
Во, вспомнил пример из жизни, сейчас напишу
Pavel
Короче, у нас юристы очень часто меняют печатные формы документов, естественно клиент заключает договор по договору который видит в момент заключения, генерация документов - довольно сложная задача особенно если их столько же сколько у нас, так вот, каждый раз когда мы меняем версию приложения - мы меняем и версию документов, соответственно если клиент заключил договор скажем сегодня в 11 дня, а он 100500 в очереди на генерацию, мы успели зарелизить новую версию документов, то у него должны ПФ сгенерироваться со старой версии, а не новой, потому что подписывал он именно старую версию
Pavel
Вот для таких ситуаций и нужно кэширование кода джобов
Pavel
По этому например версия документов у нас передается прямо в джоб, а все что приходит в джоб пропсами - кэшируется вместе с кодом
Pavel
Соответственно джоб вызывает бизнес логику документов, но уже в метод генерации самого документа он передает версию из джоба, соответственно у нас хоть через неделю могут сгенерироваться документы для этого пользователя, может хоть 20 релизов пройти, но документы сгенерируются с нужной версией
Pavel
Это наверное самое лайтовое что я вспомнил, говорю же, такой подход очень много проблем решает, просто скорее всего ты не сталкивался, и не одну проблему не создает если знать и учитывать эту особенность при разработке
Pavel
Вообще в ларавел очень мало делается вещей "Просто потому что Тейлор так хочет", ты меньше чатики Российские читай где каждый второй - бог программирования и вот он бы, вот он бы точно написал бы идеальный фреймворк
Pavel
У нас типа кстати недавно уволили который когда пришел на собеседовании говорил что он пишет свой фреймворк потому что все текущие какой то говно, и он точно знает какой фреймворк людям нужен, ну и первый месяц всем на уши приседал своими "гениальными" идеями, только вот незадача, он оказался настолько слаб в работе что даже не справлялся с рутинными задачами, а что то более сложное ему за 4 месяца никто так дать и не доверил
Pavel
Очень показательно для ру - комьюнити
Павел
Павел
С другой стороны когда чел банально за mvc на шарит изначально, а уже что-то пилит
Павел
это конечно да
Pavel
За то ебучую Yii2 боготворят за совершенно отбитые решения которые при масштабировании несут тысячи проблем
Павел
юии любят за скорость из коробки и просту всяких крудов
Павел
за что любить его больше - я не знаю
Павел
и если я хочу использовать laravel ui он мне говорит "ну ок, но только это деприкейтед, атата!"
Павел
LiveWire и Иннерция напоминают какой-то оверкильный кастыль
Типа монолитное приложение, но с реактивностью
Ну прям пахнет же писюнами
Anonymous
Павел
Pavel
Павел
вроде слово "говно" я не видел)
Anonymous
Вот и я о том же
Павел
а про анонимки ваня сказал еще когда я в диалоге был
Pavel
Он выше сказал что кэшировать джоб это пиздец)
Pavel
Ай, ща найду
Pavel