Size: a a a

2020 April 02

SA

Sky Alex in Go-go!
Зачем эти сложности?

Сейчас у меня в теле таска просто
lock := libs.NewLock(containerId)
defer lock.Unlock()

И все.
источник

VM

Vladislav Milenin in Go-go!
пока что все что вы решили делать похоже на большой факап, разбираться в котором будет сложно

вот это переусложненно. А @onokonem правильно все рекомундует
источник

АП

Александр Попов in Go-go!
Daniel Podolsky
чтобы знать, можно ли запускать непараллельную
типо получить с нее канал и автоматически получит "лок" если он занят?
источник

SA

Sky Alex in Go-go!
Ладно, возможно я запутал вас словом таск.


Есть N контроллеров (тело таска).
Есть роутер.
У каждого таска свой путь типа "/:id/dump/:uuid/create"
Все.
источник

RS

Roman Sharkov in Go-go!
Sky Alex
Зачем эти сложности?

Сейчас у меня в теле таска просто
lock := libs.NewLock(containerId)
defer lock.Unlock()

И все.
напишите работающий пример на play.golang.org а там тебе разложат что да куда
источник

АП

Александр Попов in Go-go!
Sky Alex
Ладно, возможно я запутал вас словом таск.


Есть N контроллеров (тело таска).
Есть роутер.
У каждого таска свой путь типа "/:id/dump/:uuid/create"
Все.
стоп стоп стоп, так у вас http хендлеры?
источник

SA

Sky Alex in Go-go!
Александр Попов
стоп стоп стоп, так у вас http хендлеры?
Да.
источник

SA

Sky Alex in Go-go!
Ето не очередь.
источник

x

x-foby in Go-go!
Denis
Хелп плз
есть кусочек кода

valOfResult := reflect.ValueOf(rawRes.Value())
reflect.ValueOf(resultPtr).Elem().Set(valOfResult)


Работает почти правильно, ошибка такая
panic: reflect.Set: value of type *emailcheckout.Response is not assignable to type emailcheckout.Response


То есть вот что хочется сделать, если бы без рефлекта:
*resultPtr = &rawRes.Value()
источник

SA

Sky Alex in Go-go!
Просто нужно что б два хттп хендлера не выполнялись одновременно.
источник

АП

Александр Попов in Go-go!
но в то-же время выполнились для некоторых?
источник

DP

Daniel Podolsky in Go-go!
Александр Попов
типо получить с нее канал и автоматически получит "лок" если он занят?
нет

перед запуском таски инкрементим его, после получения отчета - декрементим

если 0 - можно запускать непараллельную таску
источник

SA

Sky Alex in Go-go!
Александр Попов
но в то-же время выполнились для некоторых?
Для разных баз.
Нельзя паралельно только для одной базы.
источник

SA

Sky Alex in Go-go!
Список баз динамический.
источник

SA

Sky Alex in Go-go!
вот тело "менеджера локов"
https://play.golang.org/p/g7p1VC49W8d
источник

SA

Sky Alex in Go-go!
в хенлдерах
lock := libs.NewLock(containerId)
defer lock.Unlock()
источник

E

Edgar in Go-go!
Тогда предложил бы вариант @onokonem , но просто без счетчика внутри горутины, одна таски пришла по каналу, выполнилась, вернули ответ по каналу и взяли след. таску
источник

АП

Александр Попов in Go-go!
заводите на каждую базу канал и гоурутину...
источник

АП

Александр Попов in Go-go!
вернее стартуем гоурутину и кладем ее канал в мап
источник

SA

Sky Alex in Go-go!
Александр Попов
заводите на каждую базу канал и гоурутину...
Хоспаде...
источник