Ускорить GetResponse веб-запроса? - PullRequest
0 голосов
/ 19 января 2019

У меня есть следующий код:

//Send request and get response
let req = WebRequest.Create(Uri("https://www.google.com/))
req.Proxy <- null
req.Method <- WebRequestMethods.Http.Get
use resp = req.GetResponse()

Требуется приблизительно 250 мсек, чтобы получить запрос, который может показаться не таким уж большим.Но я буду проверять около 200 ссылок, поэтому я действительно хочу, чтобы это время уменьшилось.Есть ли способ ускорить его?

1 Ответ

0 голосов
/ 20 января 2019

Вы можете сделать это с помощью асинхронных рабочих процессов F # и распараллелить ваши запросы, используя Async.Parallel. Вам также необходимо установить ограничение числа параллельных подключений .NET, которое оно позволяет, чтобы фактически обеспечить более высокий уровень параллелизма. Как то так:

open System
open System.Net

ServicePointManager.DefaultConnectionLimit <- 20

let checkUrl url = 
  async {
    let req = WebRequest.Create(Uri(url))
    req.Proxy <- null
    req.Method <- WebRequestMethods.Http.Get
    use! resp = req.AsyncGetResponse()
    printfn "Downloaded: %s" url
    return resp.ContentLength }

[ for i in 0 .. 100 -> checkUrl (sprintf "http://www.google.com?%d" i) ]
|> Async.Parallel
|> Async.RunSynchronously
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...