Kirya
Это поле просто
Artem
resp.ContentLength
Kirya
Сравнивай его с 0
Artem
Ошибка
Artem
Я пробовал
Kirya
Какая?
Artem
Та же самая
Kirya
Нет
Kirya
Не ври
Artem
invalid memory address or nil pointer dereference
Kirya
Покажи код
Artem
Обработки err?
Kirya
Ты err провкрил до этлго?
Kirya
Покажи кусок кода
Artem
resp, err := client.Do(req) if err != nil { if strings.Index(err.Error(), "Client.Timeout exceeded while awaiting headers") != -1 || strings.Index(err.Error(), "connection refused") != -1 { e := fmt.Errorf("Invalid body %s", string(body)) e = ErrRepeatWith return nil, e } else if strings.Index(err.Error(), "Proxy Authentication Required") != -1 { e := fmt.Errorf("Invalid body %s", string(body)) e = ErrRepeatWith return nil, e } return body, err }
Je
У меня эта ошибка обрабатывается if strings.Index(err.Error(), "Client.Timeout exceeded while awaiting headers") != -1
Нельзя подвязываться на текст ошибок, смотри switch err https://medium.com/@sebdah/go-best-practices-error-handling-2d15e1f0c5ee
Kirya
А где ты проверяешь contentlength?
Artem
я его пока убрал
Artem
а вообще сразу после resp, err := client.Do(req)
Je
Вот там выше ссылка, перепиши на проверку по типу ошибки, не тексту. Давай с этого начнем
Kirya
странный код
Kirya
resp, err := client.Do(req) if err!=nil { return nil,err }
Kirya
вот так должно начинаться у тебя
Kirya
а ниже ты можешь resp.ContentLength выводить
Artem
Вот я может чего-то не понимаю, но 1 запрос теряется
Artem
Я второй день не могу понять где он теряется
Kirya
resp, err := client.Do(req) if err!=nil { fmt.Printf("err http request: %v\n", err) return nil,err }
Artem
1-2
Kirya
вот так выводи ошибку в консоль и смотри
Artem
сек
Kirya
ещё перенос строки добавь \n
Kirya
в выводе
Artem
Ну там только Client.Timeout exceeded while awaiting headers
Artem
Но они корректно обработались
Kirya
где там? в логе?
Artem
Да, по этому коду
Artem
Выводит только одну ошибку
Kirya
ну.ю так в чём проблема?
Artem
Но в сниффере смотрю всё корректно
Artem
Artem
e = ErrRepeatWith return nil, e
Artem
Проблема в том, что эти ошибки обрабатываются, а 1-2 запроса теряются
Kirya
ты читаешь ошибку? твой клиент отменил запрос, потому что сервак медленно отвечает
Artem
Читаю) я эту ошибку обработал и выдал ошибку 449
Kirya
ну, так в чём проблема?)
Artem
Artem
А если ошибка не обработана, то будет выведено
Artem
скрин выше
Artem
Проблема в том, что в 90% случаях что-то да теряется
Kirya
ладно, я бессилен помочь) сложно быть экстрасенсом
Artem
Спасибо за попытки)
Kirya
Всем привет) кто подскажет, вылетает ошибка invalid memory address or nil pointer dereference, код: resp, err := client.Do(req) fmt.Println(resp.ContentLength)
отвечу на этот вопрос: resp, err := client.Do(req) if err!=nil{ // тут мы должны выйти } fmt.Println(resp.ContentLength)
Artem
Это всё есть
Kirya
тогда проблема решена
Artem
Эх если бы)
Kirya
так в чём проблема?
heavycharged
кто-то тестил разницу производительности между сокетом и портом, когда nginx проксирует в Go?
𝒦𝒶𝓁𝒶𝓎⛩
Добрый день! Кто подскажет что ни так? —---------------------------------------------------------— type waitMessage map[string]*chan structure.Message func (w *waitMessage) Set(msg structure.Message) { w[msg.ID] <- msg } func (w *waitMessage) Get(id string) (msg structure.Message) { msg <- w[id] delete(*w,id) return }
Nikita
Зачем указатель на канал?
Vladimir
И зачем вообще так делать?
𝒦𝒶𝓁𝒶𝓎⛩
А каналы кто будет инициализировать?
Это тип данных при инициализации предполагалось инициализировать
Vladimir
В гете
Vladimir
Зачем?
𝒦𝒶𝓁𝒶𝓎⛩
Зачем?
Сообщение прочитано удалить канал
𝒦𝒶𝓁𝒶𝓎⛩
ссылку на него
Vladimir
Зачем тогда вообще канал?
𝒦𝒶𝓁𝒶𝓎⛩
Вот это сложно объяснить. Мне нужно по неизвестному запросу получить сообщение от машины. Таких сообщений тонна
Vladimir
@Nixolay чо конкретно ты пытаешься сделать?
𝒦𝒶𝓁𝒶𝓎⛩
Нужно их идентифицировать
𝒦𝒶𝓁𝒶𝓎⛩
для этого в сообщении шлется id
𝒦𝒶𝓁𝒶𝓎⛩
и когда по тлс приходит ответ
𝒦𝒶𝓁𝒶𝓎⛩
я его отправляю через рест в ответ на гет запрос
𝒦𝒶𝓁𝒶𝓎⛩
не знаю на сколько это понятно
Vladimir
не знаю на сколько это понятно
Понятно, но зачем тебе каналы?
𝒦𝒶𝓁𝒶𝓎⛩
Запросился гет запрос я создал канал и жду когда на него прийдет ответ, этот канал я отправил в мап который по id ждет ответ. КОгда по тлс пришел ответ он находит в мапе по id канал и шлет его туда
𝒦𝒶𝓁𝒶𝓎⛩
Гет запрос получает ответ из канала и отправляет на страницу