关于WebRequest 循环请求的超时问题求解!

狼烟辉 2014-01-15 10:14:11
代码如下:

List<T> list = Repository.GetAll();//1K条数据
WebRequest req;
WebResponse response;
Stream ReceiveStream;
StreamReader readerOfStream;
System.Net.ServicePointManager.DefaultConnectionLimit = 100;
list .ForEach(data =>
{
req = WebRequest.Create("http:*****/id=" + data.id);
req.Timeout = 100000;
response = req.GetResponse();

using (ReceiveStream = response.GetResponseStream())
{
using (readerOfStream = new StreamReader(ReceiveStream))
{
string strjson = readerOfStream.ReadToEnd();
if (!string.IsNullOrEmpty(strjson))
{
data.pid= strjson.Substring(3, 7);
}
}
}
response.Close();
});

如上,我获取的是某网站的json数据,大概有1000个网址,循环的匹配获取。
数据量在200左右很快,如果超过1K,则页面查询时出现一直加载的现象,怎么样处理能够解决或者缓解这样的情况,多线程?
...全文
395 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞花猪肉 2014-01-19
  • 打赏
  • 举报
回复
后台线程处理信息收集,前台做个良好的用户体验界面
lyx266 2014-01-17
  • 打赏
  • 举报
回复
慢是肯定的 你依次访问1000次网站 1次需要0.1秒 也要100秒 只能用多线程来处理了
狼烟辉 2014-01-17
  • 打赏
  • 举报
回复
引用 8 楼 wayu002 的回复:
不太清楚你想达到什么效果?
因为是查询的时候抓取网上商城的商品信息,要抓取的链接大约有1000多个,如果一次循环抓取会导致假死。 功能就是循环1000次访问网站,获取json信息,填充grid。 通过sleep可以解决这个问题,2分钟查询抓取完成,我就是想看有没有更好的方法。
wayu002 2014-01-17
  • 打赏
  • 举报
回复
不太清楚你想达到什么效果?
狼烟辉 2014-01-17
  • 打赏
  • 举报
回复
引用 5 楼 mmm306306 的回复:
线程+代理 抓取
问下,1000条数据,开10个线程,一个线程处理100条数据,这样大约需要1分多钟。
狼烟辉 2014-01-17
  • 打赏
  • 举报
回复
引用 1 楼 wayu002 的回复:
貌似你这个是同一个网站下不同的资源吧,循环1000次访问肯定会卡,增加了人家后台服务器的压力,没把你的ip封掉就不错了,加个sleep试试?
sleep一下确实可以,不过每次循环sleep(20),查询出来大约要2分钟,对于网络条件比较差的环境,估计要的时间更加长。
马老虎 2014-01-17
  • 打赏
  • 举报
回复
引用 7 楼 wolf_y 的回复:
[quote=引用 5 楼 mmm306306 的回复:] 线程+代理 抓取
问下,1000条数据,开10个线程,一个线程处理100条数据,这样大约需要1分多钟。[/quote] 数据量这么小 可以不使用多线程。加上代理就行了
md5e 2014-01-15
  • 打赏
  • 举报
回复
ajax调取
狼烟辉 2014-01-15
  • 打赏
  • 举报
回复
引用
貌似你这个是同一个网站下不同的资源吧,循环1000次访问肯定会卡,增加了人家后台服务器的压力,没把你的ip封掉就不错了,加个sleep试试?
的确是这样的,按照这个说法,如果我开10个线程,每个负责100条,这个应该会快很多。
wayu002 2014-01-15
  • 打赏
  • 举报
回复
貌似你这个是同一个网站下不同的资源吧,循环1000次访问肯定会卡,增加了人家后台服务器的压力,没把你的ip封掉就不错了,加个sleep试试?
马老虎 2014-01-15
  • 打赏
  • 举报
回复
线程+代理 抓取
狼烟辉 2014-01-15
  • 打赏
  • 举报
回复
引用 3 楼 liuchaolin 的回复:
ajax调取
我的需求是,先从数据库获取对象,然后根据此对象中的ID,来组合http,最后获取链接下的json信息再界面上展示,我对ajax不太熟,刚接触不久,能否详细点。
内容概要:本文围绕“可再生能源发电与电动汽车的协同调度策略”展开硕士论文级别的研究与复现工作,基于Matlab平台构建了高比例可再生能源接入背景下电力系统与电动汽车(EV)之间的多时间尺度协同优化模型。研究重点在于应对风光发电不确定性,充分利用电动汽车作为移动储能单元的灵活充放电能力(含V2G技术),实现电网削峰填谷、提升新能源消纳效率与系统运行经济性。文中综合考虑了异质电动车集群特性、V2G过程中的损耗约束以及随机因素影响,采用如深度确定性策略梯度(DDPG)强化学习、混合整数线性规划(MILP)等先进优化算法进行求解,并通过基准模型对比验证了所提自适应调度策略在提升电网稳定性、降低运行成本方面的有效性。; 适合人群:具备一定电力系统基础知识、优化理论背景及Matlab编程能力的研究生、科研人员,以及从事新能源并网、智能电网调度、车网互动(V2G)等方向的工程技术人员。; 使用场景及目标:①学习并复现已发表高水平硕士论文中的协同调度建模方法与仿真流程;②掌握将深度强化学习(如DDPG)应用于虚拟电厂、电动汽车集群调度等复杂非线性决策问题的技术路径;③为开展新能源消纳、需求侧响应、微电网优化运行等相关课题的研究提供可复用的代码框架与创新思路参考。; 阅读建议:建议读者结合文中提供的完整Matlab代码与技术文档,深入理解模型构建逻辑、算法实现细节与参数设置依据,优先在Simulink/Matlab环境中运行并调试仿真案例,通过调整场景参数与算法超参,探究不同策略对调度效果的影响,从而深化对协同调度机制与智能优化方法应用的理解。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧