Как обеспечить строгую согласованность кэша при записи в Django/DRF под высокой нагрузкой?
Короткий ответ: Делайте запись в БД в транзакции, фиксируйте событие в outbox и только после коммита инвалидируйте/перестраивайте кэш (write-through), используя версионирование ключей. Защищайтесь от stampede через короткие TTL + jitter и распределённые локи в Redis. Для чтения с реплик учитывайте лаг и маршрутизируйте горячие чтения на мастер или используйте read-your-writes токены/версии. 
Библиотека собеса по Python
  Библиотека собеса по Python
🎲 Знаешь, что хуже всего на собесе?
Когда задают простой вопрос, а ты не можешь ответить.
🤔 Это ощущение, когда понимаешь:
От «я знаю...» до «сейчас объясню!» всего один курс.
✅ Алгоритмы и структуры данных — от Big O до задач криптографии.
✅ Python для разработчиков — пиши чистый и эффективный код.
✅ Архитектуры и шаблоны — строй системы, которые масштабируются.
✅ Основы IT — всё необходимое для входа в профессию.
Выбирай любой и забирай со скидкой 40% только до конца октября.
🔗 Выбрать курс
  Когда задают простой вопрос, а ты не можешь ответить.
🤔 Это ощущение, когда понимаешь:
«Блин, я это знаю... вроде... сейчас...»
От «я знаю...» до «сейчас объясню!» всего один курс.
✅ Алгоритмы и структуры данных — от Big O до задач криптографии.
✅ Python для разработчиков — пиши чистый и эффективный код.
✅ Архитектуры и шаблоны — строй системы, которые масштабируются.
✅ Основы IT — всё необходимое для входа в профессию.
Выбирай любой и забирай со скидкой 40% только до конца октября.
🔗 Выбрать курс
У вас есть Python-сервис, который обрабатывает асинхронные запросы через asyncio. При нагрузочном тесте задержки начинают расти, хотя CPU и память почти не используются. В чём может быть причина и как её решать?
Скорее всего, внутри event loop есть блокирующие операции (синхронные вызовы к БД, файлам или тяжёлые вычисления). Их нужно вынести в отдельный процесс или поток (ProcessPoolExecutor/ThreadPoolExecutor) либо заменить на асинхронные аналоги библиотек. 
Библиотека собеса по Python
Библиотека собеса по Python
❤1👍1
  Какова амортизированная сложность push_back у динамического массива при удвоении ёмкости и почему?
O(1) амортизированно. Редкие дорогостоящие копирования «распределяются» на множество дешёвых вставок; потенциал/агрегатный анализ показывает, что суммарная стоимость m операций ≤ 3m.  Кстати, у нас сейчас действует 40% скидка на курс  Алгоритмы и структуры данных . 
Библиотека собеса по Python
  Библиотека собеса по Python
🤔 Как ускорить браузер
Закрой все вкладки со словами «MacBook», «купить ноутбук», «ноут в рассрочку». Потому что у нас есть решение лучше.
🔥 Proglib разыгрывает MacBook Pro 14. Формула простая: покупаешь любой курс до 15 ноября → учишься 2 недели → пишешь куратору #розыгрыш
Пока у тебя открыто 147 вкладок с ценами, кто-то уже прокачивает скилы и может забрать приз.
👉🏻 Выбрать курс для участия
Закрой все вкладки со словами «MacBook», «купить ноутбук», «ноут в рассрочку». Потому что у нас есть решение лучше.
🔥 Proglib разыгрывает MacBook Pro 14. Формула простая: покупаешь любой курс до 15 ноября → учишься 2 недели → пишешь куратору #розыгрыш
Пока у тебя открыто 147 вкладок с ценами, кто-то уже прокачивает скилы и может забрать приз.
👉🏻 Выбрать курс для участия
😁2
  Что такое __slots__ в Python, как они функционируют и когда их стоит применять?
__slots__ — это специальный атрибут класса, который задает фиксированный набор атрибутов для его экземпляров. Это позволяет сократить использование памяти, так как вместо хранения атрибутов в стандартном словаре (__dict__) они размещаются в фиксированной структуре. __slots__ особенно полезны, когда необходимо создать большое количество объектов одного класса, и экономия памяти имеет критическое значение. Однако стоит учитывать, что использование __slots__ ограничивает возможность добавления новых атрибутов, что может снизить гибкость классов. 
Библиотека собеса по Python
Библиотека собеса по Python
👍3❤2
  Как избежать «висячих» задач и утечек при отмене в asyncio?
Используйте TaskGroup и asyncio.timeout, всегда await-ьте созданные задачи; при отмене ловите CancelledError, делайте cleanup в finally, закрывайте ресурсы (aclose/async with), а shield применяйте только к коротким критическим секциям. 
Библиотека собеса по Python
Библиотека собеса по Python
❤3
  Как реализовать контролируемый параллелизм и 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
