Как избежать «висячих» задач и утечек при отмене в asyncio?
Используйте TaskGroup и asyncio.timeout, всегда await-ьте созданные задачи; при отмене ловите CancelledError, делайте cleanup в finally, закрывайте ресурсы (aclose/async with), а shield применяйте только к коротким критическим секциям.
Библиотека собеса по Python
Библиотека собеса по Python
❤4
Как реализовать контролируемый параллелизм и backpressure в asyncio, если внешние ресурсы (БД/HTTP) ограничены?
Ограничивайте конкуренцию asyncio.Semaphore/пулами соединений, очередьйте работу через asyncio.Queue с фиксированным размером и воркерами, ставьте явные таймауты (asyncio.timeout) и прокидывайте отмену. Не запускайте «тысячи gather»; используйте TaskGroup для структурированной конкуренции, rate-limit (токен-бакет) и ретраи.
Библиотека собеса по Python
Библиотека собеса по Python
👍4
⚡️ Механизм запущен, часики тикают
Прямо сейчас кто-то уже купил курс со скидкой 40%, открыл первый урок и уже на пути к MacBook Pro 14.
А ты всё ещё читаешь этот пост...
⏰ Дедлайны не ждут:
31 октября — скидка 40% сгорает
15 ноября — розыгрыш MacBook
🎯 Правила участия:
→ купить любой курс до 31 октября
→ отучиться 2 недели
→ написать #розыгрыш куратору
🕊️ Не упусти свой шанс
Прямо сейчас кто-то уже купил курс со скидкой 40%, открыл первый урок и уже на пути к MacBook Pro 14.
А ты всё ещё читаешь этот пост...
⏰ Дедлайны не ждут:
31 октября — скидка 40% сгорает
15 ноября — розыгрыш MacBook
🎯 Правила участия:
→ купить любой курс до 31 октября
→ отучиться 2 недели
→ написать #розыгрыш куратору
🕊️ Не упусти свой шанс
Как выполнять CPU-bound работу, не блокируя event loop, и масштабироваться по ядрам?
Не гоняйте CPU в asyncio: выносите в ProcessPoolExecutor/multiprocessing или нативные модули, которые освобождают GIL. Для кратких задач — loop.run_in_executor, для долгих — отдельные процессы с пулом и ограничением конкуренции. Учитывайте стоимость сериализации: пакуйте данные в memoryview/shared memory, а не в гигантские pickles.
Библиотека собеса по Python
Не гоняйте CPU в asyncio: выносите в ProcessPoolExecutor/multiprocessing или нативные модули, которые освобождают GIL. Для кратких задач — loop.run_in_executor, для долгих — отдельные процессы с пулом и ограничением конкуренции. Учитывайте стоимость сериализации: пакуйте данные в memoryview/shared memory, а не в гигантские pickles.
Библиотека собеса по Python
👍2
Как работать с большими строками/байтами без лишних копий и перерасхода памяти?
Не конкатенируйте по одному кусочку; для строк используйте ''.join(...)/io.StringIO, для байтов — bytearray/io.BytesIO/memoryview (срезы без копий). Стримьте по чанкам, для файлов подойдёт mmap. Помните: срез bytes копирует, memoryview — нет.
Библиотека собеса по Python
Библиотека собеса по Python
✨ Halloween Special — последний день магии! 👻
Успевай сегодня купить курсы со скидкой 40%!
А также участвуй в розыгрыше MacBook Pro 14 💻
После полуночи останется только тыква 🎃
🔮 Открой портал и выбери курс
Успевай сегодня купить курсы со скидкой 40%!
А также участвуй в розыгрыше MacBook Pro 14 💻
После полуночи останется только тыква 🎃
🔮 Открой портал и выбери курс
Как работать с большими строками/байтами без лишних копий и перерасхода памяти?
Не конкатенируйте по одному кусочку; для строк используйте ''.join(...)/io.StringIO, для байтов — bytearray/io.BytesIO/memoryview (срезы без копий). Стримьте по чанкам, для файлов подойдёт mmap. Помните: срез bytes копирует, memoryview — нет.
Библиотека собеса по Python
Библиотека собеса по Python
❤1
Когда выбирать typing.Protocol вместо ABC и какие есть ограничения?
Protocol — для структурной типизации («утиная» совместимость) без наследования: достаточно совпадения сигнатур. Работает на уровне тайпчекера; для рантайм-проверок нужен и только isinstance/issubclass. Не хранит состояние и не навязывает реализацию — идеален для плагинных интерфейсов.
Библиотека собеса по Python
@runtime_checkableБиблиотека собеса по Python
👍3❤1
Разница между Django OneToOneField и ForeignKey Field?
Оба они являются наиболее распространенными типами полей, используемых в Django. Единственное различие между ними заключается в том, что поле ForeignKey состоит из параметра on_delete вместе с классом модели, поскольку оно используется для отношений «многие к одному», тогда как, с другой стороны, OneToOneField реализует только отношение «один к одному» и требует только класс модели.
Библиотека собеса по Python
Библиотека собеса по Python
Что делает функция scandir?
Функция os.scandir() в Python предназначена для получения итератора объектов os.DirEntry, которые представляют записи в указанном каталоге. Записи возвращаются в случайном порядке, при этом специальные записи '.' и '..' всегда будут находиться в начале списка.
Библиотека собеса по Python
Библиотека собеса по Python
Что такое old-style и new-style классы и в чем их различия?
— Old-style классы наследуются напрямую от класса type, тогда как new-style классы имеют наследование от класса object.
— New-style классы предлагают дополнительные функции, такие как дескрипторы, свойства и слоты, которые недоступны в old-style классах.
— В new-style классах метод __init__ вызывается при наследовании, в отличие от old-style классов.
— New-style классы являются предпочтительными, так как они полностью поддерживают принципы объектно-ориентированного программирования. Большинство библиотек требуют именно их использование.
Рекомендуется применять new-style классы, унаследованные от object, поскольку они обладают расширенными возможностями и лучше интегрируются с другими объектами.
Библиотека собеса по Python
— New-style классы предлагают дополнительные функции, такие как дескрипторы, свойства и слоты, которые недоступны в old-style классах.
— В new-style классах метод __init__ вызывается при наследовании, в отличие от old-style классов.
— New-style классы являются предпочтительными, так как они полностью поддерживают принципы объектно-ориентированного программирования. Большинство библиотек требуют именно их использование.
Рекомендуется применять new-style классы, унаследованные от object, поскольку они обладают расширенными возможностями и лучше интегрируются с другими объектами.
Библиотека собеса по Python
Как реализовать корректный graceful shutdown в asyncio-сервисе без потери данных?
Ловите SIGTERM/SIGINT (Unix — loop.add_signal_handler), ставьте общий флаг/Event, отменяйте воркеры через TaskGroup/cancel(), ждите их в try/except CancelledError/finally. Давайте тайм-аут на дренаж очередей и завершение in-flight операций, корректно закрывайте пулы (БД/HTTP). В ASGI используйте lifespan-хуки (startup/shutdown).
Библиотека собеса по Python
Библиотека собеса по Python