Ку всем. Есть вопрос. Есть у меня кароче команд хенделер,

юзаю команд бас. И у меня есть кейс где могут быть эроры в команд хендлере, и они должны транслейтится и отдаватся на фронт. Как мне это правильнее сделать?

48 ответов

5 просмотров

есть встроеный транслейтер в симфе, можно его использовать

Можно поллить с клиента, или вебсокеты слушать.

Можно попробовать перевести ошибки в объемный бизнес флоу с востановлением. Ибо если сразу известно об ошибке то это не ошибка а просто один из вариантов развития событий. Вот и обработайте его соответственно.

Sergei Baikin
Можно попробовать перевести ошибки в объемный бизн...

а если там действительно exception ? имхо комманд бас не предназначен для передачи пользователю фидбека какого-либо в принципе

Dmitry
а если там действительно exception ? имхо комманд ...

Если действительно ошибка в коде или база отвалилась то поправьте ваш код или инфраструктуру и ретрай команды завершиться успехом.

Sergei Baikin
Если действительно ошибка в коде или база отвалила...

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

Dmitry
а если там действительно exception ? имхо комманд ...

А вы как показываете фидбек юзеру?

Vlad Petrov
А вы как показываете фидбек юзеру?

а у меня нет проблемы, я не использую команд бас, он мне не подходит

Dmitry
не, это понятно. но вот юзер об этом уже не узнает...

Ну я и предлагаю сделать так чтобы команда всегда была успешной. Тогда мы показываем что успех. Нам не надо ждать никакого ответа.

Sergei Baikin
Ну я и предлагаю сделать так чтобы команда всегда ...

согласен, это и предполагает команд бас паттерн - если уж команду запустили то всегда будет успех как я понял автору необходимо чтобы юзер смог отследить фейл команды вдруг чего без технологий ретраев со всеми вытекающими, но командс бас тут не применим

Dmitry
а у меня нет проблемы, я не использую команд бас, ...

Я тоже не юзаю. Но я так понимаю, чтобы следовать принципам команд баса - нужен websocket сервер(ну или периодически опрашивать серв аяксом или что то подобное). Как по другому?

Vlad Petrov
Я тоже не юзаю. Но я так понимаю, чтобы следовать ...

а, если рассуждать чисто теоретически ? как выше сказали команд бас не предполагает фейла в принципе, все проверки на вероятность успеха должны проходить ДО того как отдается команда что-либо выполнить

Dmitry
согласен, это и предполагает команд бас паттерн - ...

Зачем так категорично. Вот это надо обычно это просто получается когда говорят как сделать. Но прогер не выясняет чего надо достичь. В итоге потом в чате решает проблему в том как хак воткнуть вместо того чтобы сделать по нормальному. Возможно поменяв логику процесс или/и UI

Dmitry
а, если рассуждать чисто теоретически ? как выше с...

Предполагает. Он точно также сообщением может сообщить о том что стало. Главное не рассматривать фэил как что то другое от не фейла. Это всё результат.

Dmitry
а, если рассуждать чисто теоретически ? как выше с...

То есть показать юзеру, что товар забронирован, не в момент реальной бронировки, а после успешного запроса на бронировку?

Sergei Baikin
Предполагает. Он точно также сообщением может сооб...

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

Vlad Petrov
То есть показать юзеру, что товар забронирован, не...

В таком случае овербукинг или неприкосновенный запас. Или компенсация решает проблему

Sergei Baikin
В таком случае овербукинг или неприкосновенный зап...

Стрёмная тема. Юзер может за это время наделать делов. Потом откатывай кучу всего. Я предпочёл бы показать юзеру только усшешной обработки команды, через тот же вебсокет. И только потом пусть юзер действует дальше.

Vlad Petrov
Стрёмная тема. Юзер может за это время наделать де...

для этого вам понадобится держать канал вебсокета уникальный для юзера и юзать es

Vlad Petrov
Стрёмная тема. Юзер может за это время наделать де...

Расскажите амазону про их стремную логику)

Vlad Petrov
А зачем ес?

а как сокет узнает о результате работы команды где-то там в недрах системы ?

Sergei Baikin
Расскажите амазону про их стремную логику)

В таком же случае клиент должен знать, как изменится стейт после обработки команды. А это может быть сложной задачей. Придётся дублировать логику.

Dmitry
а как сокет узнает о результате работы команды где...

На клиенте генерим uuid для команды. Отправляем на сервер. Потом ждём ответа по нашему uuid. Точнее не ответа а сообщения по uuid

Vlad Petrov
В таком же случае клиент должен знать, как изменит...

Зачем? Команда не говорит менять стейт команда говорит что надо сделать. Клиент априори знает что он хочет получить.

Vlad Petrov
На клиенте генерим uuid для команды. Отправляем на...

мне кажется это плохая идея писать в сокет прямо из команды

Dmitry
мне кажется это плохая идея писать в сокет прямо и...

Я так и не предлагал. Мы шлем наш uuid через http запрос. Потом только слушаем сокет

Sergei Baikin
Зачем? Команда не говорит менять стейт команда гов...

Так в результате команды должен измениться стейт клиента. Может даже косвенно.

Vlad Petrov
Я так и не предлагал. Мы шлем наш uuid через http ...

но сокет это отдельный сервис, он будет подписан на ивенты публикации данных в нужный сокет

Vlad Petrov
Так в результате команды должен измениться стейт к...

Например? Зачем вам надо знать что там случилось и не достаточно что это просто случилось?

Sergei Baikin
Например? Зачем вам надо знать что там случилось и...

Баланс списан. Я больше не могу купить что то. Не хватает денек

Sergei Baikin
Например? Зачем вам надо знать что там случилось и...

например, деньги ушли реально или только запрос на перевод ушел

Sergei Baikin
Например? Зачем вам надо знать что там случилось и...

Ну скорее клиенту нужна связь не на конкретнуя команду, а на весь нужный ему стейт, чтобы он обновлялся.

Vlad Petrov
Баланс списан. Я больше не могу купить что то. Не ...

Ага раскажите это банкам. Они вообще говорят ваш запрос будет исполнен если достаточно денег. И в ui просто меняется с надеждой на лучше. И не надо ничего ждать. Мы знаем что мы хотели и чего должны получить.

Sergei Baikin
Ага раскажите это банкам. Они вообще говорят ваш з...

Ок. Не думал об этом. Спс. Вы реально на практике юзаете такой подход?

Sergei Baikin
Ага раскажите это банкам. Они вообще говорят ваш з...

Но мы же в своих теориях лучше собаки. Зачем равняться на плохой сервис :)

Vlad Petrov
Баланс списан. Я больше не могу купить что то. Не ...

Опять же если как у амазона кредитка только то мы тоже предполагаем что заплатится. А если не пройдет платеж то стопорим потом отправку и шлем письмо что денег не хватило.

Dmitry
Но мы же в своих теориях лучше собаки. Зачем равня...

Это как раз хороший сервис. Если вы заставите ждать 2 дня пользователя межбанковской транзакции. А она идёт 2 дня. Заблокировав ему все операции. Вот это плохой сервис.

Sergei Baikin
Это как раз хороший сервис. Если вы заставите ждат...

межбанковская транзакция 2 дня - вот это плохой сервис, никогда не понимал причин

Dmitry
межбанковская транзакция 2 дня - вот это плохой се...

Поэтому что распределенность и независимость плюс eventual consistency. Хороший пример емеил. Если вы будете каждый раз по 10 минут ждать пока емеил дойдет это такое себе удовольствие. Там же все просто вам сразу говорят успех или спать. И если в редких случаях что то не так то потом сообщают другим письмом. Но в 99.99% этого не требуется. У пользователя ощущение что отправка работает мгновенно.

Sergei Baikin
Это как раз хороший сервис. Если вы заставите ждат...

Мы же всё равно должны уведомить юзера как можно быстрее, что транзакция всё таки совершилась. Хоть это будет и через час.

Vlad Petrov
Мы же всё равно должны уведомить юзера как можно б...

Да не надо уведлмлять. Банки и не уведомляют. Они говорят о неуспешных. Также как и в примере и емейлами

Sergei Baikin
Да не надо уведлмлять. Банки и не уведомляют. Они ...

в целом да, вы правы. для команд баса просто нужна схема "команда всегда успешна, а когда неуспешно то нужен какой-то канал связи с юзером чтобы ему об этом сказать и компенсировать все остальное"

оч просто. Кидаешь из команды эвенты. Типа "аттеншн, тут у нас ошибка". На эти эвенты подписывается штука, которая вещает их в потоке в паблик. будет ли это вебсокеты или server sent event или лонгполлинг не важно. Клиент на фронте тоже в свою очередь подписывается на интересные ему эвенты через этот вещатель. Получив событие выводишь уже инфу по нему и чоото делаешь.

Sergei Baikin
Поэтому что распределенность и независимость плюс ...

день добрый !) мельком увидел ваше обсуждение, стало интересно: а в кейсе, где нужна какая либо долгая транзакция ( в моём случае это было математическое ПО, которое позволяло по интернетам решать сложные задачки, которые считаются долго ), ответ от которой необходим пользователю ( в моём конкретном случае ответом являлся файлик файлик с большой матрицей - просто набором чиселок ), что можно делать ?)

Похожие вопросы

Обсуждают сегодня

Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
Привет, сталкивался кто с такой ситуацией? У меня есть модальное окно Bootstrap, в нем кнопка закрытия: <button type="button" class="btn-close" data-bs-dismiss="modal" aria-...
Виталий
3
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
что это и почему оно? executor.start_polling(bot, skip_updates=True, on_startup=on_startup, File "/usr/local/lib/python3.10/dist-packages/aiogram/utils/executor.py", line 4...
𐌍𐌄 ᕓ𐌄𐌓𐌌Ꝋ𐌓𐌄
2
Окрошка! На квасе или кефире или на пиве?!
Akcium Сергей
4
Кто-то юзал insomnia? Удобная штука ужас
𐌍𐌄 ᕓ𐌄𐌓𐌌Ꝋ𐌓𐌄
3
А что насчет FluentValidation? тоже ведь есть альтернатива у МС.
devman
13
Напомните пожалуйста, v1.1 работает на PHP 8.2?
Ross
7
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Ребят, всем привет) Кто юзал/юзает Postgres? Я на MySQL сделал простенький сайт для диплома, но я внезапно обнаружил условие что надо было на Postgres) Проблема в том, что я н...
Dororo Steeeve
4
Карта сайта