一、目录
环境及需求
问题
解决方案
二、环境及需求
每个任务都会有1万线程访问这个方法,这个方法里面又会访问验证码验证服务的方法,这样就会解开验证码限制,后续的访问达成有效访 问。然后过了一个时间单位,访问又会受限,多个线程同时请求验证码验证服务,解封后,后面的访问就会正常。这样一直循环。
因为验证码服务收费,并且解封一次后续就可正常访问。怎样让这1万个并发线程进入方法后,队列去请求验证码服务,请求成功后其它线程不访问验证码服务。
1、这里用示例程序模拟一下环境,模拟1万线程并发请求:
static void Main(string[] args)
{int count = 10000;
List urls =PageSourceController.GetUrls(count);
List products =PageSourceController.CollectedProducts(urls);
}
2、模拟count=10000个url
public static List GetUrls(intcount)
{
List urls = new List();
for (int index = 0; index < count; index++)
{
string url = string.Format("http://congcong.jd.com/{0}.html", index + 1);
if (!urls.Contains(url))
urls.Add(url);
}
returnurls;
}
3、根据上面获取到1万个url集合进行并发请求
public static List CollectedProducts(Listurls)
{//一万线程并发
System.Threading.Tasks.Parallel.ForEach(urls, u =>{
PageSourceController.GetProductInfo(u);//......//do something...
});return null;
}
4、并发请求的方法GetProductInfo(string