symfony | Unsorted

Telegram-канал symfony - Symfony

-

Группа единомышленников фреймворка Symfony. Здесь вы можете поделиться опытом работы с фреймворком или задать любой интересующий вопрос ;) По всем вопросам: @sovetit

Subscribe to a channel

Symfony

генерить doc.json то я могу

https://symfony.com/bundles/NelmioApiDocBundle/current/index.html

что и пытаюсь сделать

Читать полностью…

Symfony

поле с типом json в openapi отдается как object, что приводит к ошибке @OA\\Items() parent type must be "array" in

    #[ORM\Column(type: Types::JSON, nullable: true, options: [
'jsonb' => true,
])]
private array $field = [];


в коде либы так и прописано

        if ($parent instanceof Schema && $parent->type !== 'array') {
$this->_context->logger->warning('@OA\\Items() parent type must be "array" in ' . $this->_context);
$valid = false;
}


вопрос, в каком тогда типе должен отдаваться json и как это сделать?

Читать полностью…

Symfony

Кстати, мы немного о разных вещах говорим)
Я имел ввиду не отправку одного сообщения со всем данными для него, вместо кучи маленьких
У Кафки есть отправка вообще всех типов сообщений с каким-то интервалом чтобы пачкой
В таком случае с коммитом офсета выигрыша не будет, так как по сути это те же сообщения, которые могут быть вообще в разные топики, и каждый из них будет обрабатываться отдельно
Хотя как раз таки при батче однотипных и будет выигрыш с оффсетом - действительно, надо поразбираться. Может об одном говорим просто кто на что смотрит)
https://kafka.apache.org/protocol#protocol_batching

Читать полностью…

Symfony

Но как идея осталась - может в вашем случае будет полезно :)

Читать полностью…

Symfony

У себя собираете запросы и пачками разгребаете

Читать полностью…

Symfony

Можно вроде как мессенджером разрулить, он умеет формировать батчи и обрабатывать отдельным хандлером

Читать полностью…

Symfony

Есть вариант между

Открывать между сервисами авторизованный туннель как долгоживущие соединение и по нему слать несколько запросов подряд

Читать полностью…

Symfony

у меня не уровень вайлдебрис
но и не уровень советов Михи когда он пишет что это оверхед
если я по одному буду отправлять, я точно положу тот сервис)

Читать полностью…

Symfony

но я бы хотел чтобы например какой нить retry там поймался из-за кривого алгоритма другого сервиса потому что он 400 поймал

Читать полностью…

Symfony

в плане реализации я могу хоть что сделать)

но например в дашбордах если я вижу 400 ошибки я быстро на них реагирую
и в эластике я агрегирую какие чаще всего ошибки по 400

из этих соображений это точно 400 а не 200

Читать полностью…

Symfony

Да мне кажется не надо что-то изобретать.
1) валидация входных данность на корректность - это дешёвая операция, ее можно провести до обработки, поэтому сразу проверяем запрос и абортом с 400
2) под капотом, если у вас просто последовательно выполняются операции над каждым - то так и проходим и заполняем данные для ответа - такой-успешно, такой-не успешно
3) дальше уже ваша точка зрения, считаете ли вы частично обновлённое - успешным запросом? 2хх и перечисляем результаты для каждого
Если нет - 4хх (выбрать подходящий отдельный, не используемый что ли, хотя мб есть общепринятый, но так как у каждого может быть разный, например где-то доступ 401, где-то что-то ещё) и некорректные.

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

Читать полностью…

Symfony

Мне кажется я придумал промт: я буду просить gpt давать ответ на основе анализа этих документации )

Читать полностью…

Symfony

На примере апи обновления стоков
https://docs.ozon.ru/api/seller/#operation/ProductAPI_ProductsStocksV2
400 если при валидации на весь запрос
Если ошибка глубже - 200 с результатами как успешных так и нет
https://dev.wildberries.ru/openapi/work-with-products/#tag/Ostatki-na-skladah-prodavca/paths/~1api~1v3~1stocks~1{warehouseId}/put
ВБ, 400 на весь, если запрос некорректен, 409 если уже дальше ошибка, и только неправильные
https://developers.avito.ru/api-catalog/stock-management/documentation#ApiDocumentationBlock
Авито 400 на весь запрос, если дальше - 200 с результатами

Это, конечно, не бест практис, но как делают крупные игроки :)

Читать полностью…

Symfony

Я не понимаю о чём ты

Читать полностью…

Symfony

т.е. у нас фатал и все?

Читать полностью…

Symfony

Свагер это спецификация

Читать полностью…

Symfony

Возможно даже об одном и говорите. Там же в кафке полинг, флаш. Можно принудительно, можно автоматом, можно каждое можно нет. И это все дефолтное апи, а не отдельное батч апи.
Там под капотом продюсер копит в себе сообщения, если не принудительно отправлять по одному.
Но может я и ошибаюсь, мало с ней работал

Читать полностью…

Symfony

Хотя это асинк и тоже свой соответствующий оверхед. Но это так, друг полезно будет 😅

Читать полностью…

Symfony

Правда я не стал имплементировать, коллега предложил - посовещались и из-за специфики проекта не стали так делать

Читать полностью…

Symfony

https://symfony.com/doc/current/messenger.html#process-messages-by-batches

Читать полностью…

Symfony

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

Читать полностью…

Symfony

у кафки там при отправке по одному идет доп запрос на коммит
он больше проблем делает если по 1му слать

Читать полностью…

Symfony

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

Смотрите, та же Кафка с каждым запросом отправляет заголовки, которые весят, какое-то число

При 1000 запросов мы отправим 1000 таких заголовков, это значительный оверхед.
При батче понятно дело 1 заголовок и большое тело.

А так как заточено обычно все это дело под большой тротпут - мы должны минимизировать это

Но на маленьких объемах, как сказал Павел, это не сыграет роли.
Так как выигрыш будет незначителен.

И ладно в кафке все это есть под капотом, мы не паримся, он собирает и отправляет пачкой сам при настройке

А в приложении это реализовывать самому и стоит ли игра свеч - главный вопрос.
Им - да. Это потоковое и просто нагруженное. Нам - вопрос

Читать полностью…

Symfony

лично в моей голове, если он целиком не обработался это нифига не 200 )

Читать полностью…

Symfony

Имхо, конечно, что кмк батч обновление товаров оно подразумевает, что часть может быть с ошибкой, часть нет

Если запрос дошел до фактической обработки, то есть корректный и т.д. - значит успех 2хх, а что конкретно по каждому не так прошло - это уже как раз результат поэлементно внутри бади разбирать

Читать полностью…

Symfony

Есть мысли какие зарубежные мануалы можно закинуть? Типа амазона

Читать полностью…

Symfony

Спасибо.
это лучший ответ!

Читать полностью…

Symfony

Можно мы закончим этот пустой спор

Читать полностью…

Symfony

дальше продолжать нельзя отправлять заказы?

Читать полностью…

Symfony

пофиксил отправку? мы дальше отправлять заказы не можем?

Читать полностью…
Subscribe to a channel