home.social

Search

62 results for “aiohttp”

  1. Как тестировать внешние API в Python: от DI-мока до настоящего HTTP-сервера

    Почти каждый сервис, который мы сегодня пишем, ходит куда-то наружу — платёжный шлюз, биллинг, чужой публичный API. И каждый раз, когда садимся писать тесты на этот код, упираемся в один и тот же вопрос: как протестировать клиента, не привлекая внимания санитаров выходя в реальный мир? Эта статья про то, как выбирать инструмент под эту задачу. Не абстрактно — на одном маленьком, но гордом настоящем сервисе catfact-demo-service , в tests/ которого рядом лежат пять способов протестировать одну и ту же интеграцию. К концу мы их сравним и аргументированно выберем тот, который оставили бы в production-проекте.

    habr.com/ru/articles/1034864/

    #python #pytest #тестирование #aiohttp #mock #интеграционные_тесты #http #dishka #fastapi #asyncly

  2. Опыт разработки picows: самые быстрые вебсокеты для asyncio

    Всем привет! Меня зовут Тарас, я автор библиотеки picows — ультрабыстрых вебсокетов для asyncio . В этой статье я расскажу, почему вообще появилась ещё одна библиотека для вебсокетов, покажу результаты бенчмарков и заодно порассуждаю о производительности в asyncio. Предистория В далёком-предалёком 2021 году мне довелось поучаствовать в разработке алготрейдинг-платформы для криптовалютных бирж. Выбор языка пал на Python из-за разнообразия ML-библиотек, возможность быстро собирать прототипы и проверять идеи, отсутствия этапа компиляции и в целом наличия богатой экосистемы. Если какая-то идея взлетит, критичный участок всегда можно оптимизировать, хотя бы частично переписав его на C/C++/Cython.

    habr.com/ru/articles/1025286/

    #websockets #python #asyncio #optimization #client #server #picows #aiohttp #benchmark #low_latency

  3. Как я устал дебажить MAX API, отреверсил их вебхуки и отучил Cursor галлюцинировать

    Как я устал дебажить MAX API, отреверсил их вебхуки и отучил Cursor галлюцинировать Когда я писал своего первого более-менее серьезного бота под Max, случилась классика. Я и мой ИИ-ассистент (Cursor) пишем код, строго опираясь на официальную документацию Max API. Запускаю — падает. Сижу по 5-6 итераций, пытаюсь отдебажить базовый функционал, который под ту же Телегу пишется с закрытыми глазами. В какой-то момент меня это достало. Я понял, что проблема не во мне и не в галлюцинациях нейронки. Я просто включил логирование всех входящих POST-запросов и стал дампить реальные вебхуки, которые прилетают от серверов Max. Открыв логи, я понял, почему мы так долго буксовали: то, что написано в документации, и то, что прилетает по факту — это две большие разницы. А слепая привычка писать архитектуру под Telegram Bot API делает только хуже. Различия с официальной документацией Max API (Docs vs Реальность) Вскрываем реальные вебхуки Max API

    habr.com/ru/articles/1005282/

    #python #template #boilerplate #chatbot #aiohttp #asyncio #maxapi #maxmessenger #telegram #telegram_bots

  4. Анализируем MLP сообщество на Пикабу или как я спарсил 65 тысяч постов с Pikabu и построил интерактивный дашборд

    Дело было вечером, делать было нечего... Я, как и многие в IT, периодически просматриваю вакансии, чтобы держать руку на пульсе рынка. И знаете, что бросается в глаза? Огромное количество позиций "Аналитик данных". Хоть это и не моя основная специализация (я больше по ML), теоретическая база у меня есть. И вот я подумал: а как бы мне сделать интересный пет-проект в этой области, чтобы и навыки прокачать, и самому не заскучать?

    habr.com/ru/articles/968106/

    #python #парсинг #data_analysis #streamlit #дэшборд #пикабу #aiohttp #визуализация_данных #петпроект #plotly

  5. Почему простой парсер не всегда решает задачу: мой опыт интеграции спортивных API

    В рамках собственной системы спортивной аналитики я хотел получить real-time доступ к данным о движении коэффициентов — в частности, с платформы pickingodds.com. У сервиса интересная фича — визуализация графика изменения линии по каждому событию. Это потенциально полезный источник вторичных сигналов (например, для обнаружения аномалий, связанных с резкой коррекцией маркет-мейкеров). Изначальный план был прост: интегрироваться по REST API, выкачивать данные раз в несколько минут, писать в TSDB, использовать далее для анализа и фичей в ML-пайплайнах. На практике же всё быстро ушло в зону нетривиальной оптимизации.

    habr.com/ru/articles/930360/

    #pickingodds #коэффициенты_ставок #асинхронный_парсинг #rate_limiting #aiohttp #Redis #Kafka #TimescaleDB #LightGBM #ML_фильтрация_событий

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

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

    habr.com/ru/companies/ivi/arti

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

  7. More projects sprinting today at #PyConUS!

    Room 317: @beeware, Python Packaging, Wheelnext, @aio_libs, @aiohttp
    Room 318: @pyladiescon Website, @blackpythondevs Website, RenderEngine, @pyOpenSci
    Room 319: Arcade/Pyglet, django-simple-deploy, py-bugger, CUDA Python, RAPIDS + GPU Data Science, @ppb
    Room 320: MemRay/PyStack, PydanticAI, Free-threaded Compatibility, PyO3
    Room 321: GDSFactory, SOSW, Algorand

    #PyConUS2025 #PyConUSSprints

  8. FastOpenAPI: автодокументация OpenAPI для разных фреймворков на Python

    Всем привет! Меня зовут Никита Рыженков, и я хочу поделиться опытом разработки библиотеки FastOpenAPI. Это инструмент, который приносит удобный стиль маршрутизации FastAPI и автоматическую документацию OpenAPI в целый ряд Python-фреймворков. Идея родилась из личной боли: в одном проекте приходилось поддерживать OpenAPI-документацию сразу в нескольких фреймворках, и я устал дублировать решения под каждый из них. Вдохновившись лаконичностью FastAPI, я решил создать унифицированный подход для Flask, AioHttp, Sanic, Falcon, Starlette, Quart, Tornado – назвал его FastOpenAPI​. В этой статье расскажу, какие проблемы решает FastOpenAPI, как он устроен внутри и как им пользоваться с примерами кода под каждый поддерживаемый фреймворк.

    habr.com/ru/articles/903622/

    #python #openapi #flask #falcon #aiohttp #sanic #starlette #tornado #opensourсe #сезон_open_source

  9. Лучшие практики создания отказоустойчивых систем

    Разработка отказоустойчивых систем представляет собой важнейшую компетенцию для инженеров, занятых созданием распределённых и масштабируемых приложений. Под отказоустойчивостью понимается способность системы сохранять работоспособность в условиях сбоев отдельных компонентов или недоступности внешних сервисов. В данной статье рассматриваются практики обеспечения устойчивости на уровне программного кода, в частности в контексте серверных приложений, реализованных на языках Python и Java. Особое внимание уделяется методам повышения надёжности при временных сбоях, включая: повторные попытки выполнения операций с экспоненциальной задержкой (exponential backoff), использование шаблона circuit breaker, механизмы плавной деградации функциональности (graceful degradation), задание таймаутов, реализация идемпотентности, ограничение одновременных вызовов (bulkhead isolation), а также внедрение систем мониторинга и алертинга. Приводимые примеры охватывают типовые сценарии — обращение к внешним API, взаимодействие с базами данных и выполнение фоновых задач.

    habr.com/ru/articles/896638/

    #python #java #spring_boot #aiohttp #безопасность #отказоустойчивые_системы #отказоустойчивость #чистый_код

  10. If you work with , note that CPEs in NVD are subject to change. I've just discovered that a lot of CPE bindings in are outdated due to changes in CPE vendors and products (aiohttp_project:aiohttp -> aiohttp:aiohttp, stlport:stlport → stlport_project:stlport, soundexchange:sound_exchange → sox_project:sox etc). If you maintain CPE bindings for any purpose, you should revisit and update them.

  11. One friend of mine wrote a blog post on his @homeassistant setup:

    "Home Assistant helps me survive during missile and drone attacks. Here is how." denysdovhan.com/home-assistant

    #python saving lives IRL y'all!

    #HomeAssistant #IoT #aiohttp #homeautomation

  12. Tired of missing GitHub PR reviews? I built github-monitor -- a lightweight Linux daemon that watches for PRs assigned to you and sends desktop notifications the moment they land.

    Features:
    - Desktop notifications with author avatars via notify-send
    - System tray indicator with live PR count and clickable PR list
    - Runs quietly as a systemd user service -- set it and forget it
    - Config reload on SIGHUP, graceful shutdown on SIGTERM

    Under the hood:
    - Pure async Python (asyncio) -- no threads, no blocking I/O
    - aiohttp for GitHub API, dbus-next for session bus IPC
    - Daemon exposes live state over D-Bus, indicator connects as a separate process
    - Frozen dataclasses, strict mypy, full test coverage

    Built with Python 3.13+, packaged with hatchling, managed with uv.

    It's open source and I'd love feedback -- whether it's bug reports, feature ideas, or contributions!

    github.com/dvoraj75/github-mon

    #Python #Linux #OpenSource #GitHub #AsyncPython #DBus #Systemd

  13. Пишем универсальный прототип бэкенд-приложения: Litestar, FastStream, dishka

    Привет, Хабр! Меня зовут Сергей, я техлид в команде PT BlackBox. Мы с коллегами разрабатываем продукт, который позволяет обнаруживать уязвимости в приложениях методом черного ящика. Фактически мы сами и пишем веб-приложения, и именно о них пойдет речь в статье. Я бы хотел с вами поделиться своими наработками по теме бэкенд-приложений и предоставить вам шаблон-прототип, который, как мне кажется, может закрыть подавляющее большинство потребностей при их разработке. Для написания прототипа я буду использовать Litestar , FastStream и dishka . Эта статья будет особенно полезна тем, кто пишет на Tornado, Django, Flask или AIOHTTP и хочет перейти на более актуальные технологии для дальнейшего развития своих проектов на современных рельсах. Ну что ж, приступим

    habr.com/ru/companies/pt/artic

    #python #Litestar #прототип #web #faststream #asgi #sqlalchemy #alembic #pydantic #dishka

  14. Пишем универсальный прототип бэкенд-приложения: Litestar, FastStream, dishka

    Привет, Хабр! Меня зовут Сергей, я техлид в команде PT BlackBox. Мы с коллегами разрабатываем продукт, который позволяет обнаруживать уязвимости в приложениях методом черного ящика. Фактически мы сами и пишем веб-приложения, и именно о них пойдет речь в статье. Я бы хотел с вами поделиться своими наработками по теме бэкенд-приложений и предоставить вам шаблон-прототип, который, как мне кажется, может закрыть подавляющее большинство потребностей при их разработке. Для написания прототипа я буду использовать Litestar , FastStream и dishka . Эта статья будет особенно полезна тем, кто пишет на Tornado, Django, Flask или AIOHTTP и хочет перейти на более актуальные технологии для дальнейшего развития своих проектов на современных рельсах. Ну что ж, приступим

    habr.com/ru/companies/pt/artic

    #python #Litestar #прототип #web #faststream #asgi #sqlalchemy #alembic #pydantic #dishka

  15. Пишем универсальный прототип бэкенд-приложения: Litestar, FastStream, dishka

    Привет, Хабр! Меня зовут Сергей, я техлид в команде PT BlackBox. Мы с коллегами разрабатываем продукт, который позволяет обнаруживать уязвимости в приложениях методом черного ящика. Фактически мы сами и пишем веб-приложения, и именно о них пойдет речь в статье. Я бы хотел с вами поделиться своими наработками по теме бэкенд-приложений и предоставить вам шаблон-прототип, который, как мне кажется, может закрыть подавляющее большинство потребностей при их разработке. Для написания прототипа я буду использовать Litestar , FastStream и dishka . Эта статья будет особенно полезна тем, кто пишет на Tornado, Django, Flask или AIOHTTP и хочет перейти на более актуальные технологии для дальнейшего развития своих проектов на современных рельсах. Ну что ж, приступим

    habr.com/ru/companies/pt/artic

    #python #Litestar #прототип #web #faststream #asgi #sqlalchemy #alembic #pydantic #dishka

  16. I might be looking for one or more coding buddies for a modest after work #python #game project.
    Especially someone who can support keeping me organized and motivated. Both are hard with ADHD.
    No need to be a professional it is meant for fun and learning. Ideally, we can learn from each other while having fun
    #codingtogether.
    Moderate Python skills needed. German or English speaker. No Vibe coding.

    Here is my pitch:
    I miss the old browser games of 10-20 years ago without all sorts of fancy frontend nonsense.
    Animations, graphics, overbearing JS, Flash or similar. I'd like to do a very toned-down CLI style UX.
    Maybe some
    #asciiart.

    And I'd like to use and improve my
    #async programming skills as well as try out/showcase the #textual library.
    I have also wanted to build something on top of the Space Traders API for a while.
    I have been a developer on the
    #OGame Team for a while and have worked on porting old browser games to newer PHP versions before.
    I have been an OGame player for about a decade.
    I have 20 years of experience in web development in PHP.

    Here is my proposed Stack:
    * Python 3.10 or above
    *
    Textual Frontend
    *
    AioHTTP via OpenApi Generator
    * SQLite / SqlAlchemy for local storage
    *
    Space Traders API
    * Bonus points for hosting the app on a server with textual-serve or textual-web.

  17. I might be looking for one or more coding buddies for a modest after work #python #game project.
    Especially someone who can support keeping me organized and motivated. Both are hard with ADHD.
    No need to be a professional it is meant for fun and learning. Ideally, we can learn from each other while having fun
    #codingtogether.
    Moderate Python skills needed. German or English speaker. No Vibe coding.

    Here is my pitch:
    I miss the old browser games of 10-20 years ago without all sorts of fancy frontend nonsense.
    Animations, graphics, overbearing JS, Flash or similar. I'd like to do a very toned-down CLI style UX.
    Maybe some
    #asciiart.

    And I'd like to use and improve my
    #async programming skills as well as try out/showcase the #textual library.
    I have also wanted to build something on top of the Space Traders API for a while.
    I have been a developer on the
    #OGame Team for a while and have worked on porting old browser games to newer PHP versions before.
    I have been an OGame player for about a decade.
    I have 20 years of experience in web development in PHP.

    Here is my proposed Stack:
    * Python 3.10 or above
    *
    Textual Frontend
    *
    AioHTTP via OpenApi Generator
    * SQLite / SqlAlchemy for local storage
    *
    Space Traders API
    * Bonus points for hosting the app on a server with textual-serve or textual-web.

  18. I might be looking for one or more coding buddies for a modest after work #python #game project.
    Especially someone who can support keeping me organized and motivated. Both are hard with ADHD.
    No need to be a professional it is meant for fun and learning. Ideally, we can learn from each other while having fun
    #codingtogether.
    Moderate Python skills needed. German or English speaker. No Vibe coding.

    Here is my pitch:
    I miss the old browser games of 10-20 years ago without all sorts of fancy frontend nonsense.
    Animations, graphics, overbearing JS, Flash or similar. I'd like to do a very toned-down CLI style UX.
    Maybe some
    #asciiart.

    And I'd like to use and improve my
    #async programming skills as well as try out/showcase the #textual library.
    I have also wanted to build something on top of the Space Traders API for a while.
    I have been a developer on the
    #OGame Team for a while and have worked on porting old browser games to newer PHP versions before.
    I have been an OGame player for about a decade.
    I have 20 years of experience in web development in PHP.

    Here is my proposed Stack:
    * Python 3.10 or above
    *
    Textual Frontend
    *
    AioHTTP via OpenApi Generator
    * SQLite / SqlAlchemy for local storage
    *
    Space Traders API
    * Bonus points for hosting the app on a server with textual-serve or textual-web.

  19. I might be looking for one or more coding buddies for a modest after work #python #game project.
    Especially someone who can support keeping me organized and motivated. Both are hard with ADHD.
    No need to be a professional it is meant for fun and learning. Ideally, we can learn from each other while having fun
    #codingtogether.
    Moderate Python skills needed. German or English speaker. No Vibe coding.

    Here is my pitch:
    I miss the old browser games of 10-20 years ago without all sorts of fancy frontend nonsense.
    Animations, graphics, overbearing JS, Flash or similar. I'd like to do a very toned-down CLI style UX.
    Maybe some
    #asciiart.

    And I'd like to use and improve my
    #async programming skills as well as try out/showcase the #textual library.
    I have also wanted to build something on top of the Space Traders API for a while.
    I have been a developer on the
    #OGame Team for a while and have worked on porting old browser games to newer PHP versions before.
    I have been an OGame player for about a decade.
    I have 20 years of experience in web development in PHP.

    Here is my proposed Stack:
    * Python 3.10 or above
    *
    Textual Frontend
    *
    AioHTTP via OpenApi Generator
    * SQLite / SqlAlchemy for local storage
    *
    Space Traders API
    * Bonus points for hosting the app on a server with textual-serve or textual-web.

  20. Let's see if I can get a list of the projects who are planning on sprinting at #PyConUS this week:

    * @beeware (Room 317)
    * @pyladiescon Web Portal
    * Pallets Projects (#Flask, #Jinja, etc.)
    * #GNU #Mailman (Room 310)
    * Project Mesa
    * Read The Docs
    * SOSW
    * @blackpythondevs Website
    * Core #CPython (2 rooms)
    * Python Community and Conference Organizers Kit (Room 310)
    * Python Packaging
    * @aio_libs / @aiohttp
    * Free Threaded Python Community Support

    (continued in replies)

    #PyConUS2025

  21. Here for the second day of sprints at #PyConUS but not sure what projects are sprinting today?

    Room 308: MyPy, MyPyC, Pyrefly, ty
    Room 309: Plotly, Pallets Projects
    Room 310/311: GNU Mailman, Cloud Custodian
    Room 315: Wheelnext, CUDA Python, RAPIDS + GPU Data Science
    Room 316: CPython
    Room 317: @beeware, Python Packaging, Free-threaded compatibility, @aio_libs, @aiohttp

    (more projects in replies)

    #PyConUS2025 #PyConUSSprints

  22. FastAPI + APScheduler: Простой пошаговый гайд по созданию асинхронного API для мониторинга валют по расписанию на Python

    Как создать асинхронный API для мониторинга курсов валют на Python? В этом практическом руководстве мы разработаем сервис на FastAPI с интеграцией APScheduler, который будет отслеживать курсы USD и EUR в банках России. Вы узнаете, как реализовать асинхронный парсинг данных, настроить планировщик задач и развернуть приложение в облаке. Проект включает систему аутентификации, фильтрацию данных и REST API — идеальный пример для изучения современной веб-разработки на Python.

    habr.com/ru/companies/amvera/a

    #restapi #fastapi #python_api #sqlalchemy_20 #sqlite3 #aiosqlite #парсинг_данных #асинхронный_парсинг_данных #aiohttp #курс_валют_на_python

  23. Tired of missing GitHub PR reviews? I built github-monitor -- a lightweight Linux daemon that watches for PRs assigned to you and sends desktop notifications the moment they land.

    Features:
    - Desktop notifications with author avatars via notify-send
    - System tray indicator with live PR count and clickable PR list
    - Runs quietly as a systemd user service -- set it and forget it
    - Config reload on SIGHUP, graceful shutdown on SIGTERM

    Under the hood:
    - Pure async Python (asyncio) -- no threads, no blocking I/O
    - aiohttp for GitHub API, dbus-next for session bus IPC
    - Daemon exposes live state over D-Bus, indicator connects as a separate process
    - Frozen dataclasses, strict mypy, full test coverage

    Built with Python 3.13+, packaged with hatchling, managed with uv.

    It's open source and I'd love feedback -- whether it's bug reports, feature ideas, or contributions!

    github.com/dvoraj75/github-mon

  24. Doing some work on #uapi lately. Interestingly, Django, Flask and Quart set the response `content-type` header to `text/html` by default, even when the status code is 204 and there's no actual response body. Starlette and Aiohttp leave it unset, as expected.

  25. Как интегрировать синхронный код в асинхронный. Инструкция

    Когда создаешь новое приложение, особенно если оно должно быстро обрабатывать данные, использование библиотеки asyncio — это хороший выбор. Она позволяет работать с неблокирующими библиотеками, asyncpg и aiohttp. Однако чаще всего программисты работают с уже существующим кодом, который использует блокирующие библиотеки. Поэтому большую часть времени может занять адаптация и модернизация старого кода, так как асинхронный код не дружит с синхронным (им мешает GIL). GIL (Global Interpreter Lock) — это механизм, который предотвращает одновременное выполнение нескольких потоков в Python. Это означает, что даже если у вас есть многопоточное приложение, только один поток может выполнять Python-код в любой момент времени. Поэтому можно запускать дополнительный поток для выполнения операции ввода-вывода.

    habr.com/ru/companies/first/ar

    #асинхронный_код #python #разработка_приложений

  26. Typowa sytuacja we współczesnym #OpenSource, na przykładzie ekosystemu języka #Python.

    Wiele projektów używa biblioteki #FreezeGun, by nadpisywać wskazania zegara na potrzeby testów. FreezeGun powoli przestaje być rozwijany. W końcu zaczyna mieć problemy z nowymi wersjami Pythona. Dystrybucje, takie jak #Gentoo, są odporne na te problemy, bo mogą łatwo dodać lokalne łatki.

    Tak więc projekty zaczynają korzystać z #TimeMachine. Niestety, time-machine opiera się na hakowaniu detali implementacji CPythona (w imię wydajności, bo przecież nadpisywanie czasu w testach to wydajnościowe wąskie gardło), więc na #PyPy nie działa w ogóle. Niektóre projekty wspierają FreezeGun i time-machine równocześnie, inne nie.

    Czasem time-machine łapie segfaulty na CPythonie. Z czasem coraz więcej segfaultów zostaje zgłoszonych. Nie ma więc zaskoczenia, że nowe zgłoszenia błędów nie spotykają się z odpowiedzią. W międzyczasie, FreezeGun na nowo zaczyna być rozwijany. No i zgadnijcie, co teraz się dzieje…

    github.com/aio-libs/aiohttp/co
    github.com/aio-libs/aiohttp/co

  27. A typical situation in the modern #OpenSource, by the example of the #Python ecosystem.

    A lot of projects use #FreezeGun to mock time in their tests. FreezeGun slowly becomes unmaintained. Eventually it has issues with new Python versions. Distributions like #Gentoo are not affected because we can trivially patch it.

    So people start switching to #TimeMachine instead. Unfortunately, time-machine hacks around CPython internals (in the name of performance because obviously mocking time is such a performance-critical task), so it doesn't work at all on #PyPy. Sometimes projects support both FreezeGun and time-machine, sometimes they don't.

    Then, time-machine sometimes segfaults on CPython. Over time, more segfaults are reported. Unsurprisingly, eventually bug reports start going unanswered. In the meantime, FreezeGun starts being maintained again. Guess what's happening now…

    github.com/aio-libs/aiohttp/co
    github.com/aio-libs/aiohttp/co