home.social

#асинхронное_программирование — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #асинхронное_программирование, aggregated by home.social.

fetched live
  1. Первый запрос проходит, второй падает: почему TestClient ломает тесты FastAPI и как это исправить

    Первый запрос к FastAPI возвращает 200, второй падает с ошибкой asyncpg. При этом под uvicorn всё работает. Причина может быть в событийных циклах, которыми управляет TestClient . Разберёмся, откуда берётся ошибка, как её исправить и какие ещё особенности тестового клиента стоит учитывать. Настроить тесты

    habr.com/ru/companies/otus/art

    #python #асинхронное_программирование #pytest #тестирование_api #asgi #fastapi #httpx #testclient #событийный_цикл #отладка_ошибок

  2. Задача взяла lock() и остановила весь рантайм: пять ошибок с блокировками в async Rust

    В async Rust одна неудачно взятая блокировка может остановить весь рантайм — вместе с таймерами и задачами, которые должны были её отпустить. Разберём пять типичных ловушек с Mutex и RwLock и посмотрим, почему привычки из синхронного кода здесь дают сбой. Читать разбор

    habr.com/ru/companies/otus/art

    #rust #tokio #async_Rust #асинхронное_программирование #мьютексы #блокировки #RwLock #дедлоки #конкурентность

  3. Async void в C#: Его опасности и почему он все еще существует

    Разбираем необычную конструкцию async void В чем отличие от написания async Task ? Какие проблемы могут за ней скрываться? Для чего ее ввели в язык? Как ей правильно пользоваться? Ответы на все эти вопросы далее в статье

    habr.com/ru/articles/1078372/

    #async_void #c# #async #асинхронное_программирование #исключения #антипаттерны #task #await #void #net

  4. Async на Rust завис: как понять, где именно, когда паники нет и стек молчит

    Сервис жив, CPU в норме, паники нет — а часть запросов зависает на минуты. В async‑Rust привычный стек часто мало помогает: задача могла застрять на блокирующем вызове, мьютексе или просто перестать получать пробуждения. Разбираем, как отличать эти сценарии в Tokio и куда смотреть, когда отладчик молчит.

    habr.com/ru/companies/otus/art

    #Rust #Tokio #async #асинхронное_программирование #зависания #дедлоки #отладка #tokioconsole #мьютексы #кооперативная_многозадачность

  5. Корутины на бэкенде: семь ошибок, из‑за которых падает не тот запрос и висят не те задачи

    На демо корутины выглядят почти безошибочно, но под нагрузкой один неверный выбор области, диспетчера или способа обработки исключений быстро превращается в зависшие задачи и падение чужих запросов. Разбираем типичные ошибки Kotlin‑бэкенда и показываем, как сохранить предсказуемое поведение сервиса.

    habr.com/ru/companies/otus/art

    #Kotlin #корутины #Kotlin_Coroutines #структурная_конкурентность #обработка_исключений #отмена_корутин #асинхронное_программирование #Dispatchers #Flow #серверная_разработка

  6. Конвейеры на Channels: как не получить тихую утечку памяти и вечно висящий воркер

    Неограниченный канал спокойно работает до первого замедления потребителя, после чего очередь начинает расти, память — заканчиваться, а фоновый воркер может зависнуть при остановке сервиса. В статье разберём, как строить конвейеры на System.Threading.Channels : настраивать обратное давление, корректно завершать обработку, не терять исключения и безопасно использовать каналы в ASP.NET Core.

    habr.com/ru/companies/otus/art

    #SystemThreadingChannels #C# #NET #ASPNET_Core #асинхронное_программирование #каналы #конвейеры_обработки_данных #обратное_давление #фоновые_задачи #утечка_памяти

  7. Современный MQTT-сервис на Python

    В Python при выборе библиотеки для работы с MQTT почти всегда приходишь к paho-mqtt . Это зрелый и самый популярный клиент, но его API построен на колбэках, а современное Python-приложение живёт в asyncio : FastAPI, фоновые воркеры, асинхронные клиенты и всё это в одном общем event loop. В одном из IoT-проектов я столкнулся ровно с этим. Мне нужен был MQTT-клиент, который без сложной адаптации встраивается в асинхронное приложение и позволяет работать с подписками как с управляемыми объектами, а не через набор колбэков.

    habr.com/ru/companies/raiffeis

    #Python #MQTT #faststream #iot #eventdriven #asyncio #zmqtt #тестирование #асинхронное_программирование #pahomqtt

  8. Хватит дублировать валидацию в Django: как я подружил Pydantic с ORM и перестал страдать

    Представь: ты пишешь научный сервис. Есть модель исследователя, у которой h_index не может быть отрицательным. Ты, как добросовестный разработчик, описываешь это правило в Pydantic-схеме красиво, строго, типизированно. А потом начинается ад: те же самые «не может быть отрицательным» ты вынужден повторять в DRF-сериализаторе, в Django-форме, а если ещё и админку кастомизируешь то и там. Три, пять, десять мест, где разбросана одна и та же бизнес-логика. Знакомо? У меня эта боль копилась годами, пока я не сказал «хватит» и не написал django-nova фреймворк, который делает Pydantic единственным источником правды для всей экосистемы Django. Давай разберёмся, как удалось объединить эти две вселенные без боли, циклических импортов и магии, которая ломается на каждом обновлении Python.

    habr.com/ru/articles/1046880/

    #Django #Python #Django_Nova #FastAPI #Pydantic #асинхронное_программирование #ASGI #PostgreSQL #ORM #вебразработка

  9. Интеграция Google Gemini API в асинхронный Telegram-бот на aiogram 3.x и Python

    В прошлую пятницу, ровно в 18:47, когда я уже мысленно открывал великолепный, наполненный витаминами, напиток,, мне прилетело сообщение от тимлида: «Бот лежит, пользователи жалуются, Gemini API возвращает 429». Наш корпоративный Telegram-бот, который должен был помогать саппорту отвечать на тикеты, просто встал колом. Причина оказалась до банальности простой: мы не учли rate limiting и думали, что 50 RPM (запросов в минуту) на бесплатном тарифе — это «бесконечно много». С тех пор мы переписали архитектуру, добавили очереди, кэширование и middleware для retry. В этой статье разберу, как с нуля подружить Gemini API с Telegram-ботом на aiogram 3.x, не наступая на те же грабли.

    habr.com/ru/articles/1025300/

    #gemini_api #telegram_бот #aiogram #python #llm #асинхронное_программирование #rate_limiting

  10. Конференция Яндекс-разработчиков по JVM-языкам, бекендеры собрались обсудить будущее Java-подобных языков

    28 марта состоялась, с одной стороны, довольно камерная встреча небольшого круга специалистов: Backend-разработчиков Java. Разумеется, на встрече были и фронтэнд-специалисты, и фулстек-программисты, но когда залу задавали вопросы, кто есть кто – максимальное и максимально доминирующее количество рук было именно от специалистов бекенда. Как это было. Я пришел на час позже, не в 12 обеда, но в час дня. Сразу попал в зал на лекцию, где рассказывались не суперсложные вопросы, но затрагивались вопросы времени в Java, рассинхронизации серверов, специфики подсчета времени в таком старом языке, как Java, с учетом максимальной экономии памяти и того, что было до UTC: функции вне библиотеки time для подсчета минут и секунд при анализе времени постов, создания того или иного контента, проведения операций в целом.

    habr.com/ru/articles/1019622/

    #яндекс #jvm #java #time #асинхронное_программирование #параллелизм

  11. Асинхронное логирование в C++ — не серебряная пуля: что на самом деле ограничивает производительность

    Асинхронное логирование давно считается “очевидной оптимизацией”: вынесли запись в отдельный поток — и всё стало быстрее. Но если копнуть глубже, оказывается, что это не совсем так. В предыдущей статье я разбирал производительность популярных C++ логгеров и показывал реальные цифры: 👉 habr.com/ru/articles/1012874/ Там уже было видно, что хорошо оптимизированное синхронное логирование может быть очень быстрым. В этой статье разберёмся, почему async logging не делает логирование быстрее само по себе , и что на самом деле происходит внутри:

    habr.com/ru/articles/1017842/

    #с++ #логирование #асинхронное_программирование #производительность #многопоточность

  12. Нити и волокна (Threads & Fibers)

    Всем привет! Меня зовут Сергей и последнее время я занимаюсь backend-разработкой на Scala. Вообще, мой опыт асинхронного программирования на Scala и C# составляет более десяти лет, и за это время сложилось вполне достаточное понимание этой темы. Во всяком случае, тогда мне так казалось… Но недавно в беседе с коллегами обнаружились большие проблемы в моём «понимании», что мотивировало детально разобраться в этом вопросе.

    habr.com/ru/articles/1006576/

    #scala #асинхронность #асинхронное_программирование #потоки #нити #корутины #direct_style #волокна #threads #fibers

  13. Как устроены задачи (Task) в asyncio

    В прошлой статье мы разобрали механику событийного цикла asyncio. В этот раз поговорим о задачах, объектах класса asyncio.Task (они же по-простому "таски"). Тема важная, потому что по сути вся работа событийного цикла сводится к постоянному жонглированию задачами: запустить, приостановить, разбудить, завершить. Если понять, как устроена таска изнутри, изрядная доля магии asyncio (как и нелюбви к нему) исчезнет. На десерт шок-контент: почему await далеко не всегда является точкой, где управление возвращается событийному циклу, чтобы он мог переключиться на другую задачу. Погружаемся

    habr.com/ru/articles/1002690/

    #asyncio #async #await #python #асинхронность #асинхронное_программирование #таски #event_loop

  14. [Перевод] Хотели ускорить Postgres, а построили платформу репликации данных

    Команда Go for Devs подготовила перевод статьи инженеров Datadog о том, как из разрозненных пайплайнов вырастить надёжную мультитенантную платформу репликации данных. В материале — практический опыт масштабирования PostgreSQL, переход к асинхронной репликации, автоматизация через Temporal, работа с CDC и Kafka, а также реальные компромиссы между согласованностью, надёжностью и задержками.

    habr.com/ru/articles/985236/

    #репликация_базы_данных #асинхронное_программирование #cdc #postgres #kafka #temporal

  15. Await своими руками в C#

    Привет, Хабр! Многим кажется, что await работает только с Task и ValueTask , но на самом деле язык позволяет сделать любой объект ожидаемым — нужно лишь реализовать определённый паттерн. Итак, зачем нужен свой await? Бывают случаи, когда вам хочется написать асинхронный метод, но результат приходит не из готового Task или таймера. Например, ждёте какое-то событие, изменение файла, считывание из сокета, или просто хотите встроить задержку без запуска Task . Когда вы пишете await expr , компилятор в глубине понимает так: берётся результат expr.GetAwaiter() , затем вызывается awaiter.IsCompleted . Если false , он подписывается на awaiter.OnCompleted , когда завершится, и потом берёт awaiter.GetResult() .

    habr.com/ru/companies/otus/art

    #C# #Асинхронное_программирование #await

  16. SwooleApp: Легковесный фреймворк для Swoole — разбираем пример приложения

    Недавнооткрыл миру SwooleApp — минималистичного фреймворка для PHP, построенного на базе Swoole . Если вы уже работали с Swoole напрямую, то знаете, что это мощный инструмент для создания высокопроизводительных приложений, но иногда хочется иметь чуть больше структуры и удобства, чем предлагает чистый Swoole. Именно эту нишу и занимает SwooleApp. В этой статье я кратко расскажу, что это за проект, как его использовать, и поделюсь ссылкой на рабочий пример приложения, который можно запустить в Docker за несколько минут.

    habr.com/ru/articles/975080/

    #Swoole #PHP #асинхронное_программирование #Task_Workers #микросервисы #пул_соединений #Middleware #вебсервер #REST_API #многозадачность

  17. Управление потоком в Kotlin Flow

    Поколение большого пальца – вот как нас называли. Какие глубокомысленные переписки мы ухитрялись вести на кнопочных телефонах, набирая текст SMS большим пальцем асинхронно с конспектированием лекций… Когда пользователь печатает или вообще взаимодействует с приложением слишком быстро, возникает опасность гиперотзывчивости. Приложение вынуждено реагировать на всякий чих, а в таких случаях, как известно, не наздравствуешься. Естественно, в Kotlin Flow, где данные текут непрерывным потоком и легко провоцируют избыточные реакции, эта проблема стоит особенно остро. Например, если мы построим на Flow систему автодополнений, то увидим что-то такое:

    habr.com/ru/articles/970236/

    #асинхронное_программирование #потоки_данных #flow #корутины #kotlin #kotlin_coroutines

  18. ActiveMQ Artemis vs Apache Kafka

    Добрый день. Сегодня мы поговорим о двух мощных технологиях для асинхронного обмена данными — ActiveMQ Artemis и Apache Kafka. Мы разберемся, что они из себя представляют, как устроены под капотом, и главное — в каких ситуациях стоит выбрать одну, а в каких другую. Наш план на сегодня довольно насыщенный. Мы начнем с того, почему вообще все пришли к асинхронному общению сервисов. Затем подробно разберем ActiveMQ Artemis — что это и какие задачи решает. Заглянем в его техническую архитектуру, чтобы понять источник его производительности. После этого мы кратко вспомним основы Apache Kafka, чтобы затем перейти к самому интересному — детальному сравнению. Мы составим четкие рекомендации, поговорим о нагрузочных характеристиках и подведем итоги.

    habr.com/ru/articles/959660/

    #activemq_artemis #apache_kafka #брокер_сообщений #очереди_сообщений #асинхронное_программирование #messaging #jms #eventdriven_architecture #pubsub

  19. Кейс из production: Deadlock в асинхронном коде на Java

    Недавно наткнулся на коварную проблему, которая отлично демонстрирует важность правильной конфигурации пула потоков при работе с асинхронным программированием. Эта ситуация может возникнуть в любом проекте, где используются вложенные асинхронные операции, и её последствия могут быть катастрофическими для production-системы.

    habr.com/ru/articles/958166/

    #java #jvm #асинхронное_программирование #многопоточность #spring_framework

  20. Python в enterprise-разработке: почему популярность ЯП распространилась и на корпоративный сектор. Часть 2

    Всем привет! Это Леша Жиряков. На прошлой неделе мы начали разбирать , почему Python стал настолько востребован для создания корпоративных программных решений. Сегодня продолжим тему — поговорим об управлении зависимостями, асинхронном программировании в корпоративной среде, тестировании, корпоративной безопасности и других ключевых моментах. Заодно обсудим перспективы Python в enterprise-разработке. Приступим!

    habr.com/ru/companies/ru_mts/a

    #python #программирование #исследования_в_ит #enterprise_architect #асинхронное_программирование #корпоративная_безопасность

  21. Реактивные системы: возможно ли отслеживать зависимости в асинхронном коде?

    В реактивных системах существуют специальные функции, такие как watchEffect во Vue или autorun в MobX, которые умеют автоматически отслеживать зависимости и перезапускать «эффект» при их изменении. Принцип их работы следующий:

    habr.com/ru/articles/925304/

    #реактивность #реактивное_программирование #асинхронный_код #асинхронное_программирование

  22. Оптимизация асинхронного сервиса на Python

    Всем привет! Сегодня хочу поделиться с вами нашим опытом ускорения асинхронного микросервиса на Python примерно на 25%. Я расскажу, какие действия мы предпринимали с командой, что помогло, а что оказалось не особенно полезно с точки зрения ускорения сервиса. Небольшое предисловие: мы в Иви постоянно работаем над тем, чтобы наши сервисы отвечали быстро и их максимальная предельная нагрузка повышалась. В процессе очередного анализа сервисов, мы выяснили, что один из них, о котором пойдет речь в статье, отвечает довольно медленно, учитывая его особенности. И мы решили его ускорять.

    habr.com/ru/companies/ivi/arti

    #python #asyncio #aiohttp #асинхронное_программирование #телеметрия #оптимизация #время_ответа #профилирование #orjson

  23. О времени, сложности и мотивации: финал

    Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM

    habr.com/ru/articles/913730/

    #dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность

  24. О времени, сложности и мотивации: история поражения и победы

    Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM

    habr.com/ru/articles/913728/

    #dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность

  25. О времени, сложности и мотивации: знакомство

    Приветствую вас, читатели. Подозреваю, что вы из мира программирования. Приглашаю вас присоединиться к увлекательному рассказу о том, как один энтузиаст решил доработать свой любимый язык. Я собираюсь рассказать об увлекательном опыте внесения существенных изменений в очень сложную архитектуру кода. Почитать про приключения в мире Dart VM

    habr.com/ru/articles/913726/

    #dart #компиляторы #корутины #открытый_код #состояние #языки_программирования #мотивация #качество_кода #асинхронное_программирование #многопоточность

  26. Kalorik: Telegram-бот на Rust для анализа питания

    В данной статье мы рассмотрим архитектуру и реализацию Telegram-бота Kalorik , написанного на языке программирования Rust. Этот бот предоставляет пользователям возможность анализировать свой рацион питания, получая автоматический расчёт калорий, макроэлементов и индекса массы тела. Особенностью проекта является использование современного стека на основе tokio , sqlx , teloxide , а также продуманная архитектура с учётом масштабируемости.

    habr.com/ru/articles/910298/

    #Rust #Telegram #Боты #SQLx #PostgreSQL #AI #Машинное_обучение #OpenAI #Tokio #Асинхронное_программирование

  27. Укрощаем асинхронный код с помощью async/await

    Привет! Меня зовут Андрей Максимкин, я iOS-разработчик в hh. Мы в команде активно используем async/await подход при написании нового кода, а также активно применяем при переписывании старого. В процессе работы сталкивались с некоторыми интересными и не самыми очевидными моментами — их и рассмотрим в статье. Работа с различными потоками — очень важная часть разработки мобильных приложений под iOS. Грамотное распределение нагрузки положительно влияет на скорость работы приложения, а значит, и на пользовательский опыт. До Swift 5.5 для работы с многопоточностью в основном использовали фреймворки GCD и NSOperation. Начиная с версии Swift 5.5 стал доступен функционал async/await. В статье мы кратко расскажем о базовых принципах данного подхода и сделаем акцент на проблемах и особенностях, которые необходимо знать при написании кода. Информация будет полезна тем, кто уже знаком с функционалом async/await, а некоторые примеры могут быть интересны и более продвинутым разработчикам. Поехали!

    habr.com/ru/companies/hh/artic

    #ios #мобильная_разработка #мобильные_приложения #ios_разработка #ios_development #swift #async #await #асинхронное_программирование #асинхронные_задачи

  28. Асинхронная обработка запросов в Python: необходимость или просто модное слово?

    Все прекрасно понимают, что традиционное, классическое, «синхронное» программирование подразумевает пошаговое выполнение программного кода. Соответственно, каждый следующий шаг скрыт за пределами «видимости» до момента его выполнения. Из этого вытекает вполне логичная проблема — что делать, когда необходимо получить некие данные в процессе выполнения определенного блока кода или до? Тут на помощь нам и приходит асинхронная обработка запросов и асинхронное программирование в целом.

    habr.com/ru/companies/slurm/ar

    #python #программирование #асинхронное_программирование #асинхронность #разработка

  29. Многопоточность. Снизу вверх. Потоки в языке C#

    Привет, Хабр! Это Дмитрий Бахтенков. Добро пожаловать в третью часть цикла статей «Многопоточность. Снизу вверх»! Мы уже разобрали процессор и операционную систему , а сегодня поговорим про использование потоков в .NET с помощью языка программирования C#. Эта статья — обзор основных возможностей взаимодействия с потоками в .NET.

    habr.com/ru/companies/beeline_

    #многопоточность #потоки #управление_потоками #производительность_приложений #асинхронное_программирование #синхронизация_потоков #конкурентность

  30. Расследуем дело асинхронного программирования с Леонидом Каневским

    История развития асинхронного программирования в языке Swift. Можно относиться к этому как к расследованию нераскрытого дела. Начать расследование

    habr.com/ru/companies/cleverte

    #корутины #ios_developer #swift__разработка #асинхронноепрограммирование #асинхронное_программирование

Share on Mastodon

Enter the server where you have an account.