我需要在一天的许多小时内以尽可能快的速度发送大量的网络请求.什么是最有效的方法
本文关键字:网络 请求 什么 有效 方法 一天 许多 小时 尽可能 速度 | 更新日期: 2023-09-27 17:58:29
我有一个脚本,它在while循环中执行了很多HttpRecust,如下所示。它在BackgroundWorker中运行。
CookieContainer cookieJar = new CookieContainer();
string searchURL = "http://blablabla.com/";
bool shouldRun = true; //this is set elsewhere
while (shouldRun)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(searchURL);
request.ContentType = "application/json";
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
request.CookieContainer = cookieJar;
request.Headers.Add("X-HTTP-Method-Override: GET");
request.Timeout = 1000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Get the stream containing content returned by the server.
Stream responseStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(responseStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
JObject o = JObject.Parse(responseFromServer);
//Do something with the JObject
}
运行该脚本大约占用10%的CPU(Intel i5@2.5GHz),我想探索其他方法,看看它是否能够在不减少每秒请求数(当前速率约为3到4个请求/秒)的情况下减少CPU负载,或者是否可以增加每秒请求数。
我一直在研究异步请求,但它能为我提供上面提到的两个改进之一吗?
执行HTTP请求不是非常占用CPU,您可以在不使用10%的CPU的情况下完成20多个请求。cpu密集型的是你如何处理这些数据。解析它(以及你对解析数据所做的任何事情)是占用你大部分cpu的地方。您应该研究处理这些数据的其他方法,以节省处理能力。例如,也许您可以保存数据,并用一些脚本每分钟处理一次所有保存的数据,而不是在获得数据时对其进行处理。