Одной из важных концепций в Go является работа с контекстами (context). Это позволяет контролировать выполнение операций с учетом тайм-аутов и отмены, что важно для разработки масштабируемых и надежных систем.
📝 Пример использования context для контроля тайм-аутов:
package main
import (
"context"
"fmt"
"time"
)
func fetchData(ctx context.Context) {
// Симуляция долгой работы
select {
case <-time.After(5 * time.Second):
fmt.Println("Data fetched successfully")
case <-ctx.Done():
fmt.Println("Operation canceled:", ctx.Err())
}
}
func main() {
// Устанавливаем тайм-аут в 3 секунды
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
// Запускаем операцию
fetchData(ctx)
}📌 Как это работает:
- В примере создается контекст с тайм-аутом, равным 3 секундам. Если операция не завершится вовремя, она будет отменена.
- Функция
fetchDataсимулирует работу, которая занимает 5 секунд. Операция будет прервана через 3 секунды. - Это позволяет избежать «висящих» процессов, которые могут занимать ресурсы.
❗️ Применяются в системах, где критична скорость обработки запросов, например, в микросервисной архитектуре, при разработке высоконагруженных сервисов и при работе с внешними API, чтобы предотвратить зависание запросов и обеспечить стабильную работу системы.
tags: #go #разработка #производительность
❤️ @recura_tech



