Почему запросы очереди WebClient.DownloadStringAsync и как я могу ускорить это? - PullRequest
0 голосов
/ 12 февраля 2019

Я использую WebClient.DownloadStringAsync для отправки запросов на URL.Я отправляю тысячи запросов одновременно.В основном, существует задержка между отправкой запроса и срабатыванием обратного вызова.Чем больше запросов я отправляю, тем дольше задержка.После часа отправки запросов задержка может составить около 20 минут.Через несколько часов задержка составляет более часа.Я хотел бы знать, как я могу обработать их так быстро, как они встают в очередь.

Вот некоторые подробности:

  1. Я пробовал не асинхронный код - он занимает больше времени (около секунды на запрос), поэтому, пожалуйста, не предлагайте.

  2. Время, необходимое для запуска 5000 запросов, составляет 91 секунду

  3. Время, необходимое для выполнения 5000 запросов, составляет 177 секунд

    Посмотрите на код ниже:

    'Takes about 91 Seconds to get through this loop
    Do Until i=5000
         Dim wcWebClient As New System.Net.WebClient
         AddHandler wcWebClient.DownloadStringCompleted, AddressOf webClient_DownloadStringCompleted
         wcWebClient.DownloadStringAsync(New Uri(sURL))
         i=i+1
    Loop
    
            'Takes 177 seconds before all 5000 are processed
        Private Sub webClient_DownloadStringCompleted(ByVal sender As Object, ByVal e As DownloadStringCompletedEventArgs)
    
        End Sub
    
...