コード例 #1
0
ファイル: CrawlerService.cs プロジェクト: pudwinkie/neith
 /// <summary>
 /// アクセスのペースを調整するために許可時間のタイムスタンプを設定する
 /// </summary>
 /// <param name="cReq"></param>
 private static void WaitSiteAccess(CrawlerRequest cReq)
 {
     var key = cReq.Request.RequestUri.Host;
     if (string.IsNullOrEmpty(key)) return;
     SiteAccessBlock site;
     lock (DicSiteAccessBlock) {
         if (!DicSiteAccessBlock.TryGetValue(key, out site)) {
             site = new SiteAccessBlock();
             DicSiteAccessBlock.Add(key, site);
         }
     }
     lock (site) {
         var wait = site.PassTime - DateTimeOffset.Now;
         if (wait > TimeSpan.Zero) Thread.Sleep(wait);
         site.PassTime = DateTimeOffset.Now + PassSpan;
     }
 }
コード例 #2
0
ファイル: CrawlerResponse.cs プロジェクト: pudwinkie/neith
 /// <summary>
 /// コンストラクタ。
 /// </summary>
 /// <param name="cReq"></param>
 /// <param name="res"></param>
 public CrawlerResponse(CrawlerRequest cReq, WebResponse res)
 {
     Request = cReq;
     Response = res as HttpWebResponse;
 }