Несколько запросов GET в секунду с использованием каналов - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь написать простую программу, которая отправляет определенное количество одновременных GET-запросов в секунду, поэтому предположим, что я хочу отправлять 10 запросов с частотой 5 в секунду. В данном случае это означает, что мы хотим отправить 5 одновременных запросов дважды, всего 10 запросов.

Я реализовал это, используя каналы, но я не уверен, что это правильный подход:

Отредактировано

package main

import (
    "fmt"
    "time"
    "net/http"
)

func main() {
    transactions := 10
    frequency := 5
    prepareRequests(frequency, transactions)

}

func prepareRequests(frequency int, transactions int) {
    transactionsPerSecond := transactions / frequency
    c := make(chan string)
    link := "http://google.com"
    for i := 0; i < transactionsPerSecond; i++ {
        fmt.Println("batch: ", i+1)
        for j := 0; j < frequency; j++ {
            go sendRequests(link, c)
        }
        time.Sleep(time.Duration(1) * time.Second)

    }

    for k :=0; k < frequency; k++ {
        fmt.Println(<-c)
    }
}

func sendRequests(l string, c chan string) {
    _, err := http.Get(l)
    if err != nil {
        fmt.Println(l, "might be down!")
        c <- l
        return
    }

    c <- l
}

Обновлен игровая площадка

Это правильно? Кажется, работает, но я не уверен, что на самом деле я посылаю параллельный запрос GET через подпрограммы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...