бы так восстанавливал. а воркер бы тупо читал из канала и что то делал
func run() {
defer func(){
if err := recover(); err != nil {
log.Printf("worker failed: %s", err)
run()
}
}()
for {
task := <-tasks
// doing
}
}
Так не всегда ж паника. Может быть и ошибочный return
Обсуждают сегодня