none
Eş zamanlı olarak 100 webrequest çalıştırma RRS feed

  • Soru

  • Eş zamanlı olarak 100 json dosyasını webrequest ile almaya çalışıyorum.

    Yalnız hedef server bazen geç yanıt veriyor. Kodum şu şekilde:

    public class Program
        {
            private static Task<string> DownloadWebsiteAsync(string websiteUrl)
            {
                return new WebClient().DownloadStringTaskAsync(websiteUrl);
            }
    
            private static async Task RunDownloadAsync()
            {
                var websites = Websites();
    
                await Task.WhenAll(websites.Select(DownloadWebsiteAsync).ToList());
            }
    
            public static async Task Main(string[] args)
            {
                var watch = Stopwatch.StartNew();
    
                await RunDownloadAsync();
    
                watch.Stop();
    
                Console.WriteLine($"{ watch.ElapsedMilliseconds } milisaniye");
            }
    
            private static IList<string> Websites()
            {
                return new List<string>
                {
                    "https://www.website.com/api1.json",
                    "https://www.website.com/api2.json",
                    // ...........
                    "https://www.website.com/api100.json",
                };
            }
        }

    Yapmak istediğim bu 100 request için en hızlı şekilde yanıt almak. 

    Yazmış olduğum kod 100 request'i aynı anda çalıştırıyor mu ondan da emin olamadım biraz yavaş çalışıyor gibi geldi.

    Eğer 100 request içinde 2-3 tanesi 1 saniyenin üstünde yanıt alıyorsa bunları iptal edip tekrar çalıştırırsam sorun kalmaz gibi. 

    Yardımcı olabilirseniz sevinirim. 1 request ortalama yarım milisaniyede yanıt veriyor toplamda maksimum 4-5 saniyede tüm yanıtları almış olmam lazım. Bazen istediğim gibi oluyor ama bazen 20 saniyelere çıkıyor.

    16 Ağustos 2019 Cuma 20:07

Tüm Yanıtlar