Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 137новых вакансий за сутки·64 958вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 953
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 394 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python13 555
  • Облачные технологии9 649
  • QA вакансии2 810
  • Android1 650
  • Инженер данных1 068
  • Продакт-менеджер414

Разработка

  • Backend вакансии1 534
  • iOS1 533
  • AI вакансии749
  • Fullstack вакансии623
  • Frontend вакансии536
  • Mobile вакансии28

По стеку

  • Go7 558
  • Java4 778
  • Node.js1 528
  • Kotlin1 348
  • Rust1 252
  • .NET1 154
  • PHP506
  • C++327
  • C#314

DevOps и инфраструктура

  • Kubernetes5 503
  • Linux-инфраструктура4 223
  • DevOps вакансии4 089
  • Terraform / IaC3 059
  • Мониторинг и Observability1 414
  • CI/CD1 240
  • SRE411
  • Кибербезопасность61

Аналитика и данные

  • Аналитик данных612
  • Бизнес-аналитик572
  • Data Scientist528
  • Системный аналитик69

Другие направления

  • Проджект-менеджер147
  • UI/UX дизайн80
  • Ручное тестирование14

По регионам

  • Вакансии в США30 650
  • Вакансии в Европе12 551
  • Работа в России3 510
  • Вакансии в Канаде2 658

По формату

  • Удалённые вакансии48 186
  • Релокация в США30 650
  • Гибридная работа7 410
  • Офисная работа5 407

По уровню

  • Senior вакансии26 826
  • Middle вакансии12 754
  • Junior вакансии4 519

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis47 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Darktrace17 вакансий
  • Monzo17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме PythonВсе вопросы
PythonMiddleТеория

Что такое cancellation в asyncio?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Cancellation — кооперативный запрос задаче завершиться: task.cancel() помечает Task, а CancelledError инжектится в следующей точке await. Очистка делается в finally, и CancelledError нужно повторно пробросить.

Что делать в коде задачи

import asyncio

async def worker():
    try:
        while True:
            await asyncio.sleep(1)
            do_work()
    except asyncio.CancelledError:
        # освобождаем ресурсы синхронно или с await на короткие операции
        await close_connection()
        raise            # ОБЯЗАТЕЛЬНО пробросить, иначе structured concurrency сломается
    finally:
        cleanup_local_state()

async def main():
    task = asyncio.create_task(worker())
    await asyncio.sleep(0.1)
    task.cancel()
    try:
        await task
    except asyncio.CancelledError:
        print("worker cancelled cleanly")

asyncio.run(main())

Модель cancellation

Отмена в asyncio кооперативная. Task.cancel() не убивает поток или корутину мгновенно — он помечает Task флагом и планирует выброс asyncio.CancelledError в следующей точке await. CPU-bound цикл без await отменить нельзя: пока coroutine не отдаст управление, loop её не трогает.

С Python 3.8 CancelledError наследуется от BaseException, а не Exception — это сделано специально, чтобы except Exception: случайно её не глотал.

Как cancellation связан с timeout и TaskGroup

  • asyncio.wait_for(coro, timeout) внутри использует task.cancel() по таймеру.
  • asyncio.timeout() (3.11+) делает то же через context manager и корректно обрабатывает shielded scopes.
  • TaskGroup отменяет оставшиеся задачи, если одна упала с исключением.
  • asyncio.shield(coro) защищает coroutine от внешней отмены — отменяется только внешняя обёртка.

Подводные камни

  • Глотать CancelledError внутри except Exception (на 3.7 это происходит автоматически) — task видится как успешно завершённая, родитель не узнаёт об отмене.
  • Делать долгий blocking I/O в finally — отмена «зависает» пока cleanup не закончится.
  • В 3.11+ повторный cancel() увеличивает cancelling() счётчик; uncancel() нужно вызывать осторожно.
  • Полагаться, что task.cancel() остановит CPU-bound цикл без await — не остановит.

Частые вопросы на собеседовании

  • Что такое truthy и falsy значения в Python?
  • Когда использовать threading?
  • Что такое type hints и зачем они нужны?
  • Как работает yield?

Типичные ошибки

  • Думать, что cancel убивает поток.
  • Не знать, где возникает CancelledError.
  • Не использовать finally для cleanup.

Что проверяет интервьюер

  • Объясняет cooperative cancellation.
  • Понимает cleanup и re-raise.
  • Знает связь с timeout/TaskGroup.

Как вы знаете этот вопрос?

Проверить себя по теме Python →

Источники

  • https://docs.python.org/3/library/asyncio.html

Связанные темы

Pythonasync-awaiterror-handling