Size: a a a

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

2020 June 17

C

Cat-in-Vacuum in Golang Developers — русскоговорящее сообщество
Всем привет. А помогите разобраться, пожалуйста со сферой использования pipeline.
Нормальная ли практика писать конкуретный код там (pipeline на каналах), где парралельность скорее всего не нужна?
И смысл  тут просто в удобстве самой концепции pipeline?
краткий пример. Есть некие шаблоны json.
Есть внешние вызовы которые поставляют данные, есть потребители  для "шаблон+интерполированные в него данные".

Получается, можно сделать конвеер:
callExternalApi()
                ———>  execute() ——-> consume()
selectTemplate()
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
У вас один запрос это один шаблон?
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
Если да то не нужно ничего лишнего делать, калбек ваш уже в горутине
источник

C

Cat-in-Vacuum in Golang Developers — русскоговорящее сообщество
просто может намешиваться логика в дальнейшем в поставку шаблона
источник

C

Cat-in-Vacuum in Golang Developers — русскоговорящее сообщество
по этому выделил в отдельный процесс
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
Ну для логики можно все в функцию вынести )
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
На самом деле если тебе удобно то не особо важно как оно работает, лишние 20-30 горутин погоды не сиграют
источник

C

Cat-in-Vacuum in Golang Developers — русскоговорящее сообщество
ну я хочу понять как тру. Просто все экземплы в гугле решают задачу, где нужно параллельное выполнение, но я заметил тут больше удобство как свойство кода
источник

C

Cat-in-Vacuum in Golang Developers — русскоговорящее сообщество
т.е. норм ли передавать данные по каналам там, где не нужна параллельность?
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
Пейплайн нужен если у тебя есть параллельные действия и ограниченные ресурсы
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
Иначе либо без горутин, либо плоди сотни горутин
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
Это нормально когда горутина стартует, отрабатывает и умирает
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
Похоже я пайплайн с пулом перепутал
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
источник

C

Cat-in-Vacuum in Golang Developers — русскоговорящее сообщество
а почему так? какие подводные камни могут быть?  Если все таки тулить каналы просто для удобства?
В моем случае будет удобно набрать данные в буфф канал, пусть висят себе, пока потребитель не обратиться за данными, тогда запустится pipeline
источник

C

Cat-in-Vacuum in Golang Developers — русскоговорящее сообщество
ну да, по сути там будет по одной горутине на процесс
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
Ну у канала есть же размер? А если он закончится ?
источник

C

Cat-in-Vacuum in Golang Developers — русскоговорящее сообщество
а пул возникнет на стороне consume() , когда нужно доставить котребителю. Т.к. у меня есть варинат отправки либо в кроне, либо по требованию
источник

А

Анатолий in Golang Developers — русскоговорящее сообщество
У каналов только один нежостаток, и преимущество лднлвременно - блокировки
источник

C

Cat-in-Vacuum in Golang Developers — русскоговорящее сообщество
ну закончится, но когда consume() раскидает все данные, буфер освободится
источник