RabbitMQ как инструмент «деградации с честью»

Как построить микросервисы на RabbitMQ так, чтобы система не падала каскадом, а деградировала предсказуемо: outbox, mandatory, AE, идемпотентность, DLQ, приоритеты и реальные грабли из продакшена

Высокоуровневый язык программирования

Как построить микросервисы на RabbitMQ так, чтобы система не падала каскадом, а деградировала предсказуемо: outbox, mandatory, AE, идемпотентность, DLQ, приоритеты и реальные грабли из продакшена
Автоматический способ превращения учебника в текстовый файл (TXT) для дальнейшего анализа. В статье пишем о том, как с помощью Python и OCR извлечь текст из PDF, даже если это сканированные страницы в плохом качестве.

Хочу поделиться историей разработки и последним обновлением нашего проекта — ChameleonLab. Это кроссплатформенное десктопное приложение для стеганографии и стегоанализа. С момента первого релиза мы не только добавили новые функции, но и столкнулись с целым рядом интересных технических вызовов, решениями которых и хотим поделиться.
И, конечно же, мы наконец-то готовы представить версии как для macOS, так и для Windows.

В прошлой статье я рассмотрел самый простой вариант кастомизации целей, когда мы начинаем собирать не просто факт отправки, например, формы, но и смысл, с какими доп параметрами эта форма отправлялась.
Сегодня рассмотрим вариант, когда события произошедшие уже офлайн, отправляются обратно в онлайн статистику Яндекс Метрики и обогащают ее. Это позволит делать рекламу и собирать аудитории в Яндекс Директе точнее еще на 30-35%
Привет!
У бизнеса на практике часто встречается задача построить полноценную аналитику, используя данных из excel, csv файлов. Разнообразие подходов к заполнению и образованию таких файлов может быть разное:

Привет, Хабр! Мы в ChameleonLab разрабатываем тулкит для стеганографии, который уже работает на Windows и macOS. Сейчас мы портируем его на Linux, и, как это часто бывает, именно на этом этапе классические проблемы с ресурсами (иконками, картинками) проявили себя во всей красе.
После релиза пользователи увидели наше решение и стали спрашивать, как оно устроено и почему приложение не тащит за собой папку с картинками. Раз уж сообществу это интересно, мы решили дать развёрнутый ответ. Расскажем, как встроили все иконки прямо в код с помощью SVG, и как внутренние итерации и поиски идеального решения привели нас к финальному варианту.
Приветствую, товарищи разработчики. В этой статье я бы хотел поднять небольшой эксперимент, на который я потратил 2 недели ленивого анализа и разработки. Как понятно из названия, речь пойдет о десктопном агенте на базе open‑source языковой модели от Google — Gemma 3 на 1 миллиард параметров. Сразу уточню, что это моя первая статья на Хабре, поэтому если возникнет критика по поводу оформления или подачи — прошу расписать в комментариях.
С чего началось
А началось все со статьи на форуме Reddit, где парень, используя Ollama, Gemma 3 1b и n-ное количество API, создал себе настольного браузерного агента, который бы мог переводить текст, присылать погоду, а так же серфить просторы Интернета с помощью API Serp.dev. (прилагаю ссылку на статью).
Сама идея мне очень понравилась, потому как большая часть решений в области настольных агентов/помощников предполагала использование API популярных моделей, что сразу же делало человека зависимым от Интернет соединения и оплаты токенов. Но что мне не давало покоя именно в этом решении, так это использование API для веб-поиска, перевода и информации о погоде, что так же делало вас зависимым от провайдеров, для определенных функций.

Основан на pluggy. Основная единица pytest - pytest плагин. Написан достаточно интересно. Ключевое слово - “ключевое слово”. Основное взаимодействие в pytest происходит через хуки. Хук это некий этап к которому можно получить доступ к той или иной логики работы. Следуя из названия это некоторые крючки за который можно цепляться вставляя свои заплатки. Начинаются с pytest.
Фикстуры (Fixture) в pytest это некий аналог мока/сетап tear down в unittests. Это некие кусочки кода результаты которых могут быть пере использованы. Сами фикстуры реализованы как плагин.
Как уже говорилось в эта система плагинов полагается на Pluggy. В Pluggy програамма полагается на PluginManager который управляет сохранения спецификаций хуков регистрацией плагинов и вызовом их. Плагины могут регистрировать сами себя в PluginManager.
Когда хук стартуют они вызывают свои имплементации по умолчанию как LIFO очередь - самый поздний элемент вызывается раньше всего. Для изменения этого порядка вызова можно применять trylast or tryfirst свойства в их имплементациях(пример). По умолчанию возвращается результат от всех имплементаций с исключением случая с как firstresult свойством. В случае свойства firstresult программа возвращает результат первого не None результата.
Другое интересное свойство имплементации плагина это hookwrapper. С помощью этого свойства имплементации будут вести себя как обертки над другими хуками с помощью yield.
Вдохнули?
Хуки вызываются 3 способами:

В этой очередной статье по GIL разберемся, как работает Python, как был реализован GIL до версии языка 3.2, как глобальная блокировка работает сейчас, и что с ней делать.

Привет, Хабр!
Честно говоря, публикуя первую статью, мы и представить не могли, какой отклик она получит. В ней мы представили наш новый проект — ChameleonLab, утилиту для стеганографии с дружелюбным интерфейсом, позволяющую скрывать данные в изображениях и документах. После этого нашу почту буквально завалили письмами: люди делились идеями, задавали вопросы и рассказывали, как используют программу. Этот невероятный интерес и стал главной причиной, по которой мы с удвоенной энергией взялись за развитие проекта. Сегодня мы хотим поделиться тем, что нового появилось в ChameleonLab, во многом благодаря вам.
А для всех, кто хочет опробовать новые функции прямо сейчас, мы собрали свежую версию. Скачать ее можно по ссылке: ChameleonLab 1.3.0.0

В этой статье я коротко показываю, как три стандартные библиотеки Python — itertools, collections и functools — упрощают повседневные задачи.
В itertools разбираю полезные итераторы и паттерны работы с последовательностями: от count/cycle/repeat до groupby, permutations/product и zip_longest — всё с минимальными примерами.
В collections показываю готовые контейнеры для практики: Counter, deque, defaultdict, OrderedDict и namedtuple — где они уместны и чем удобнее обычных структур.
В functools делюсь инструментами “функционального” стиля и декорирования: lru_cache, cmp_to_key, total_ordering, partial, reduce, update_wrapper и wraps — зачем они нужны и как их быстро применить.
Пишу простым языком, примеры учебные и наглядные — ориентир на начинающих питонистов, чтобы быстрее прокачать базовые приёмы.

Привет, Хабр! Это Катя Саяпина, менеджер продукта МТС Exolve.
Самую честную обратную связь бизнес получает не из опросов, а из живых разговоров — когда клиент сам звонит и рассказывает, что его раздражает, что не работает или чего не хватает. Мы хотим извлекать эту ценность автоматически.
Сегодня покажу, как собрать простую систему фонового анализа звонков. Она забирает расшифровки разговоров через API МТС Exolve, отправляет их в GigaChat для обработки, а результаты сохраняет в базу SQLite.

Нейропомощников появилось превеликое множество и применение у них самое разное. Повсеместно начинаю замечать, что многие коллеги и друзья, так или иначе, пользуются текстовыми помощниками. Мне захотелось не просто рассмотреть эти технологии, но и сделать что-то полезное для себя — чтобы помогало в повседневной жизни. Меня зовут Михаил — я разработчик компании БАРС Груп. В этой статье расскажу, как родилась идея бота для поиска тусовок в городах России, с какими проблемами я столкнулся и к чему пришел.

В этой статье я расскажу и покажу как из любого видео на youtube можно быстро скачать аудио и транскрибировать его. И также быстро, в режиме реального времени, отредактировать полученный текст под любой формат, будь то интервью, подкаст, инструкция или целый документальный фильм. Просто следуя этому руководству вы сможете легко переводить видео с ютуба в полноценные статьи для публикации на своих сайтах без ограничений на длину видео, их количество и т. д. И все это действительно стоит копейки, а точнее несколько центов за час видеоряда с аудио.

Разработка универсальной системы резервного копирования на языке Python. Как сделать, как применить.
В сети куча туториалов по синхронным ботам и почти ничего по асинхронным. Статья нацелена на новичков в асинхронном программировании в целом и в асинхронных ботах в частности. В этой статье не будет глубокого анализа асинхронности и технических деталей реализации со сложными терминами, только суть и практические примеры.

Разбираемся, как организовать нагрузочное тестирование на Python с Locust — с сидинговыми сценариями, кастомными API-клиентами на HTTPX, конфигурацией через Pydantic и автоматическим запуском в GitHub Actions. Всё — на практике, с архитектурой, фреймворком и публикацией отчётов в GitHub Pages.
Всем привет. Я сетевой инженер в интернет провайдере. В данном посте я расскажу, как я сделал для техподдержки инструмент, для мониторинга абонентских ONU на Python. И избавился от кучи ручной работы.

После релиза первой версии стало ясно: Telegram порой ограничивает размер и скорость передачи файлов, а ещё появляется зависимость от внешнего API. Чтобы обойти эти ограничения, я решил встроить официальный сервер Telegram Bot API прямо в своё приложение.
Это позволило:
Что важнее: создать продукт, или доставить его до пользователя? Оба этапа необходимы. Сегодня обсудим второй. Как нам построить поисковую e-com систему.
Покажем, что в слово логистика товара входят сложные задачи не только: перевезти наушники из Китая в Америку, но и настройка поисковой выдачи по запросу.
Быстро соберем поисковой MVP-сервис. Дообучим модель E5 на реальных данных от Amazon. Определим метрики качества и сравним BM25, pretrain E5 и fine-tune E5. Так же взглянем глазами с отладочной информацией и проанализируем изменения поисковых выдач.
И под конец обсудим каких технологий еще не хватает и можно добавить, если возникают соответствующие трудности.