Эйч
Эйч
  • Все менторы
Задачи/Go-разработчик/Мониторинг сайтов

Мониторинг сайтов

Условие задачи

Необходимо реализовать систему мониторинга списка сайтов, которая периодически отправляет сетевые запросы к каждому сайту, фиксирует код ответа и время запроса, а затем выводит собранную статистику. Следует учитывать ограничение на количество одновременно выполняемых запросов и настроить частоту опроса через параметр RequestFrequency. Код должен использовать конкурентное выполнение (через errgroup.Group) и синхронизированный доступ к общей структуре StatusMap для хранения статуса сайтов

goconst (
    // you can limit concurrent net request. It's optional
    MaxGoroutines = 1
    // timeout for net requests
    Timeout = 2 * time.Second
)

type SiteStatus struct {
    Name          string
    StatusCode    int
    TimeOfRequest time.Time
}

type Monitor struct {
    StatusMap        map[string]SiteStatus
    Mtx              *sync.Mutex
    G                errgroup.Group
    Sites            []string
    RequestFrequency time.Duration
}

func NewMonitor(sites []string, requestFrequency time.Duration) *Monitor {
    return &Monitor{
        StatusMap:        make(map[string]SiteStatus),
        Mtx:              &sync.Mutex{},
        Sites:            sites,
        RequestFrequency: requestFrequency,
    }
}

func (m *Monitor) Run(ctx context.Context) error {
    // run printStatuses and checkSite in different goroutines
    return nil
}

func (m *Monitor) checkSite(ctx context.Context, site string) {
    // check site and write result to StatusMap
}

func (m *Monitor) printStatuses(ctx context.Context) error {
    // iterate over map and print results
    return nil
}

Профессия

Go-разработчик

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Профессии
Компания
С чем помогаемОтзывыВопросы и ответыСертификатыВебинарыСтать ментором

Платформа принадлежит ООО "Эйч Карьера"
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, город Москва, Старопименовский пер, д. 18 стр. 2, помещ./ком./этаж I/19/2

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта