gpt4 book ai didi

c# - 是否可以限制每秒的 Web 请求数?

转载 作者:行者123 更新时间:2023-11-30 15:22:52 24 4
gpt4 key购买 nike

您好,我正在搜索网站并阅读内容。我想保持合理的请求率。每秒最多大约 10 个请求应该没问题。目前它是每分钟 5k 个请求,它会导致安全问题,因为这看起来是一个机器人事件。这个怎么做?这是我的代码

protected void Iterareitems(List<Item> items)
{
foreach (var item in items)
{
GetImagesfromItem(item);

if (item.HasChildren)
{
Iterareitems(item.Children.ToList());
}
}
}

protected void GetImagesfromItem(Item childitems)
{
var document = new HtmlWeb().Load(completeurl);
var urls = document.DocumentNode.Descendants("img")
.Select(e => e.GetAttributeValue("src", null))
.Where(s => !string.IsNullOrEmpty(s)).ToList();
}

最佳答案

你需要System.Threading.Semaphore ,您可以使用它来控制最大并发线程/任务。这是一个例子:

var maxThreads = 3;
var semaphore = new Semaphore(maxThreads, maxThreads);

for (int i = 0; i < 10; i++) //10 tasks in total
{
var j = i;
Task.Factory.StartNew(() =>
{
semaphore.WaitOne();
Console.WriteLine("start " + j.ToString());
Thread.Sleep(1000);
Console.WriteLine("end " + j.ToString());
semaphore.Release();
});
}

您可以看到最多 3 个任务正在工作,其他任务正在等待 semaphore.WaitOne() 因为达到了最大限制,如果另一个线程通过 释放了信号量,则等待线程将继续>semaphore.Release().

关于c# - 是否可以限制每秒的 Web 请求数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35080504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com