Ограничение скорости задач через rate limiter

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

gorate limitertime.ticker

👁 В автоматизации на 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 #полезно #разработка

🧭 @recura_tech 🌐 VK 🌐 MAX

Тёмная карточка RECURA с фрагментом кода на Go: пример rate limiter через time.NewTicker и выводом 'обработка' в консоли.
Пример rate limiter на Go с использованием time.NewTicker (скриншот).

Читайте так же