👁 В автоматизации на Go (парсинг, API-интеграции, воркеры) частая проблема — неконтролируемая скорость выполнения. Сервис начинает слишком быстро отправлять запросы, ловит rate limit, баны или деградирует вся система. Решение — встроенный rate limiter, который контролирует частоту выполнения задач.
📝 Реализация rate limiter через time.Ticker
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(200 * time.Millisecond)
defer ticker.Stop()
for i := 1; i <= 10; i++ {
<-ticker.C
go func(job int) {
fmt.Println("обработка:", job, time.Now())
}(i)
}
time.Sleep(3 * time.Second)
}
📌 Как это работает:
time.Tickerзадаёт фиксированный интервал выполнения задач (в примере ~5 операций в секунду).- Каждая задача стартует только после получения сигнала из канала тикера.
- Это позволяет держать стабильную нагрузку и не перегружать внешние сервисы.
❗️ В автоматизации скорость — это не всегда плюс. Контроль rate позволяет избежать блокировок, сделать поведение предсказуемым и стабилизировать работу всей системы.
tags: #go #полезно #разработка



