❌

Normal view

В логе было «не удалось получить данные:» и дальше пустота. Это и была вся ошибка

В логе моего сборщика данных годами появлялась строка «не удалось получить данные:» и дальше ничего. Я считал это багом форматирования, пока не посмотрел: код написан правильно, просто у asyncio.TimeoutError пустой str(). Дальше выяснилось интереснее. Рядом лежит хелпер с тремя попытками и паузой в пять секунд, написанный ровно под сетевые сбои, а ловит он except aiohttp.ClientError. Начиная с Python 3.11 asyncio.TimeoutError это встроенный TimeoutError, наследник OSError, и к иерархии aiohttp он отношения не имеет. То есть единственная ошибка, ради которой ретраи существовали, пролетала мимо них. Причём у aiohttp есть и свои таймаутные исключения, которые как раз ClientError, и именно это сбивает с толку. Заодно разбираю, как я на основе этих пустых ошибок записал в заметки несуществующее «сетевое ограничение VPS» и построил вокруг него архитектурное решение.

Читать далее

Байты приходят, события нет: проверяем кадры SSE и gzip

Сервер отправляет по SSE три сообщения с паузой 250 мс, а клиент видит события только через 750 мс. Собрал стенд на стандартной библиотеке Python и поставил три отметки времени: байты тела ответа, текст после декодера gzip, готовое событие. Незавершённый кадр и сжатие без промежуточного сброса дают одинаковый симптом, но задержка появляется в разных точках.

Читать далее

Новинка «Высокопроизводительный Go. Руководство по оптимизации»

Привет, Хабр!

Сегодня мы рады представить вам нашу очередную новинку, которая украсит полку профессионального бэкенд-разработчика: «Высокопроизводительный Go. Руководство по оптимизации». Она продолжает сразу два направления нашей работы и ориентирована как на современных бэкендеров, всё активнее переходящих на Go, так и просто на ответственных разработчиков, желающих систематизировать проверенные практики повышения производительности. Книга сложилась из заметок и кода, над которыми много лет работал Александр Ставонин – выдающийся специалист по Go, C++, IoT и высокопроизводительным вычислениям. В своё время Александр давал на Хабре подробное интервью для компании Getmatch, в котором рассказывал о личном опыте обустройства в Сингапуре. Англоязычные черновики книги, которые легли в основу русского издания, выложены на сайте goperf.dev.

Читать далее
❌