Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: context, timeout, deadline

Когда использовать context.WithTimeout, а когда context.WithDeadline?

Вопрос проверяет опыт работы с контекстом.

Короткий ответ

WithTimeout задаёт ограничение от текущего момента (через N секунд/миллисекунд). WithDeadline фиксирует конкретное время окончания. Для API-запросов чаще берут WithTimeout, для задач с фиксированным дедлайном — WithDeadline.

Длинный ответ

Различие:

  • WithTimeout(ctx, d) → контекст отменяется через d времени;

  • WithDeadline(ctx, t) → контекст отменяется в конкретное время t.

Примеры:

ctx, cancel := context.WithTimeout(parent, 2*time.Second)
defer cancel()

ctx2, cancel2 := context.WithDeadline(parent, time.Now().Add(5*time.Second))
defer cancel2()

Когда применять:

  • WithTimeout — типичный вариант для HTTP-запросов, RPC, ожидания воркера;

  • WithDeadline — для жёстких дедлайнов, например, cron-задача «должна закончиться до полуночи».

Вывод: WithTimeout удобнее для относительных ограничений, WithDeadline — для фиксированных.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    3

Навыки

  • Golang

    Golang

  • Networks

Ключевые слова

#context

#timeout

#deadline

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.