Michael
как докачает и подождёт 10 минут вроде
Alexander
keepalive соединение не живёт бесконечно. Обычно закрывается в течение минуты после последней передачи.
Daniel
Michael
Всё верно.
Sergei
Alexander
Тогда плохо. Но это не тот вариант, что со скачиваеним файла в 100500 мегабайт.
Alexander
И вообще такое надо на вебсокетах делать :)
Daniel
с вебсокетами та же херня
Илья
в вебсокетах хотя бы можно на уровне протокола сказать - restart
Илья
со стороны сервера
Alexander
да. Используйте load balancer'ы для переключения на живую и авто-восстановление вебсокетов для кикнутых клиентов
Daniel
это да, но уже далеко от graceful
Daniel
можно еще keepalive поддерживать только на балансере, а на бекендах обойтись без него
Daniel
тогда на бекендах будет работать graceful
Daniel
но это расход сокетов втрое и лейтенси повышенная
Anonymous
Коллеги, посоветуйте. Нужно запустить через конвейер от трёх и более программ. Если самому соединять их через io.Pipe, получается уж очень громоздко. Есть ли либа или способ упростить данный процесс?
Andrey
type cmd ...
func (* cmd) Exec ...
commands := []cmd{"ls", "grep .txt", "sort"}
for i, _ := range commands[:len(commands)-1] {
r, w := io.Pipe()
commands[i].Stdout = w
commands[i+1].Stdin = r
commands[i].Exec()
}
commands[len(commands)-1].Exec()
Andrey
вроде не очень громоздко
Andrey
cmd - псевдотип, для наглядности
Michael
Написал смену юзера и группы, но что-то как был процесс под рутом, так и остался. Что я делаю не так?
func setUserAndGroup(u, g string) error {
if u != "" {
uid, err := strconv.Atoi(u)
if err == nil {
return err
}
err = syscall.Setuid(uid)
if err == nil {
return err
}
}
if g != "" {
gid, err := strconv.Atoi(g)
if err == nil {
return err
}
err = syscall.Setgid(gid)
if err == nil {
return err
}
}
return nil
}
Daniel
скажи - ты забыл, что смена юзера нормально не работает в go?
Michael
я и не знал
Daniel
к тому моменту, ак ты его менять пытаешься, несколько тредов уже запущены
Daniel
и им никто ничего не сменит
Michael
был уверен, что оно к процессу относится, а не к тредам...
Michael
а есть какие-то варианты обхода этого?
Daniel
а тред на линуксе - это процесс
Daniel
нет
Daniel
запускаться сразу от нужного пользователя - вот и все
Daniel
или под рутом в докере
Michael
ох... Ну почему опять надо что-то городить... устал уже. 😊
Daniel
https://github.com/golang/go/issues/1435 - ссылка про это
Anonymous
Nik
Daniel
а как это сделать?
Nik
Я был уверен, что на старте, пока я не сделал go func у меня один тред
Michael
тред то основной, но горутина всегда может перескочить в другой тред.
Nik
а другого треда то и не существует
Nik
он пока один
Michael
ничего подобного. они есть
Nik
значит я не шарю. Пойду почитаю
Michael
GC, например, там работает.
Michael
Хотя можно сделать LockOsThread()
Alexander
А прога не может сама себя перезапустить через sudo, если обнаружила, что запущена из под рута?
Anonymous
Aleksey
Anonymous
Наоборот стоит
На самом деле нет. Программа должна делать что-то одно, а вот лезть в sudo - аще внезапно и не ожиданно
Aleksey
Если от рута, то не sudo, а su
Aleksey
Aleksey
Но su у рута есть и он от нужного пользователя стартанёт
Aleksey
А вообще уже везде есть systemd
Daniel
делать все это должен супервизор, а не ваше приложение
Vasilii
Michael
боль
Anonymous
Anonymous
Anonymous
но это должен делать пользователь/супервизор
Anonymous
но никак не твой сервис
Anonymous
но показать ворниг/фатал - да, можно
Alexander
Я сейчас скажу крамолу, но для массового продукта автоматический перезапуск, если возможен, все равно лучше, чем просто ругаться или показывать предупреждения. Потому что люди ленивы и хотят чтобы оно "просто работало"
Anonymous
для таких целей и придумали супервизор же, ну :)
Aleksey
Alexander
супервизор еще настроить нужно, а это далеко от "просто работает"
Aleksey
Еще ридми есть для этого
Anonymous
Roman
подкрутил skeleton, рус.яз. шрифт, node-sass, пример для гошана (с гогеном). может кому пригодится для простенького симпатичного UI в легких сервисах. https://github.com/covrom/Skeleton-Sass
Alexander
Просто для примера, я когда увидел, как в PHP-шном composer сделан обход xdebug (потому что с дебаггером он сильно медленее), моя первая мысль "какого .... это уродство тут?". А потом подумал еще и понял, что это некоторое неудобство программиста, но нужно ради комфорта конечного пользователя.
Elena
Простите меня, люди которые читают и pro.go тоже 🙂
Но!
Хочу напомнить, что сегодня последний день, когда можно купить билет на конференцию GopherCon Russia за 7000 рублей.
В программе Brad Fitzpatrick и Дмитрий Вьюков из Google, Jessie Frazelle, ведущий подкаста Go Time Brian Ketelsen, Ashley McNamara и спикеры из Gett, Вконтакте, Avito, Badoo, Mail.ru и не только!
500 участников, 2 потока докладов и афтепати до победного конца!
https://www.gophercon-russia.ru/
Mr
видео будет?
Elena
да, через пару недель послле конференции все выложим в открытый доступ
Zver
Michael
А вообще уже везде есть systemd
Линукс - это везде? Я уж молчу о том, как оно размазывает информацию о причинах фейла по куче мест. В начале хрен поймёшь, что же пошло не так.
Elena
Zver
Elena
ненене, конфиденциальность подвыпивших гоферов превыше всего. Фото и видеосъемка на пати запрещены 🙂
Anonymous