private static void GetAgent <T>(LogCondition logCondition, int tryCount, Func <logEntity, DbSet <T> > getSource) where T : errorInfoBase { using (var db = new logEntity()) { var source = getSource(db); var tryTmp = source.Take(tryCount).ToList(); //var tryTmp = source.Take(tryCount).ToList(); if (tryTmp.Count() > 0) { foreach (var moreGet in tryTmp) { var infoTmp = DoGetLogStrong(logCondition, moreGet.head, moreGet.url); if (!infoTmp.LogErrorInfo.IsError) { db.Logs.AddRange(infoTmp.LogInfoList);//.AddRange(t.Result); if (infoTmp.LogErrorInfo.HasMore) { //infoTmp.LogErrorInfo.ErrorMoreInfo.head = moreGet.head; db.MoreInfos.Add(infoTmp.LogErrorInfo.ErrorMoreInfo); //} } //db.MoreInfos source.Remove(moreGet); //db.MoreInfos.Remove(moreGet); try { db.SaveChanges(); } catch (Exception e) { Console.WriteLine(e); } } } } } }
//private static void DoRetryToGetData(List<string> logLevelLs, List<string> appidLs, string[] tagValueArr, int tryCount) //{ // using (var db = new clogEntity()) // { // var tryTmp = db.RetryInfos.Take(tryCount).ToList(); // if (tryTmp.Count() > 0) // { // foreach (var toTry in tryTmp) // { // var infoTmp = DoGetLog(logLevelLs, appidLs, tagValueArr, toTry.head, toTry.url); // if (!infoTmp.LogErrorInfo.IsError) // { // db.Logs.AddRange(infoTmp.LogInfoList);//.AddRange(t.Result); // if (infoTmp.LogErrorInfo.HasMore) // { // infoTmp.LogErrorInfo.ErrorMoreInfo.head = toTry.head; // db.MoreInfos.Add(infoTmp.LogErrorInfo.ErrorMoreInfo); // //} // } // db.RetryInfos.Remove(toTry); // db.SaveChanges(); // } // } // } // } //} private static void GetData(LogCondition logCondition) { #region prepare for time TimeTable endTmp = null; using (var db = new logEntity()) { if (db.Times.Count() < 1) { endTmp = new TimeTable(); endTmp.start = new DateTime(2015, 1, 16, 16, 0, 0);// headTime.end; endTmp.end = endTmp.start.AddSeconds(30); endTmp.head = new DateTime(2015, 1, 16, 16, 0, 0); //db.Times.Add(endTmp); //db.SaveChanges(); } else { //var headTime = // (from ht in db.Times // group ht by ht.id into grp // select grp.OrderByDescending(g => g.end).FirstOrDefault()).First(); var headTime = db.Times.OrderByDescending(g => g.end).First(); endTmp = new TimeTable(); endTmp.start = headTime.end; endTmp.end = headTime.end.AddSeconds(30); endTmp.head = endTmp.start.Month != headTime.start.Month ? endTmp.start : headTime.head; if (endTmp.end > DateTime.Now.AddMinutes(-1)) { return; } //db.Times.Add(endTmp); //db.SaveChanges(); } } #endregion //var from = endTmp.start;// new DateTime(2014, 8, 26); var newFrom = endTmp.start; var newTo = endTmp.end; if (newTo > DateTime.Now.AddMinutes(-5)) { Thread.Sleep(new TimeSpan(0, 5, 0)); return; } var urlLs = getUrlListByMinutes(logCondition.HostList, newFrom, newTo, logCondition.appidLs); //getUrlListByMinutes(hostList, logLevelLs, newFrom, newTo, appidLs, tagValueLs); //urlLs = getUrlListByMinutes(hostList, "2014-09-03 10:50:13", "2014-09-03 10:52:13", appidArr); Random rnd = new Random(); List <Task <getTaskResult> > tasks = new List <Task <getTaskResult> >(); // Execute the task 10 times. foreach (var url in urlLs) { tasks.Add(Task <getTaskResult> .Factory.StartNew(() => { //RetryInfo retryTmp = null; var taskRes = DoGetLogStrong(logCondition, endTmp.head, url); return(taskRes);// new getTaskResult { LogInfoList = taskRes.LogInfoList, LogErrorInfo = new ErrorInfo { ErrorRetryInfo = retryTmp } }; })); } var t1 = DateTime.Now.Ticks; Task.WaitAll(tasks.ToArray()); var t2 = DateTime.Now.Ticks; Console.ForegroundColor = ConsoleColor.DarkYellow; Console.WriteLine("Task totle time = " + ((t2 - t1) / 10000000).ToString()); using (var db = new logEntity()) { foreach (var t in tasks) { db.Logs.AddRange(t.Result.LogInfoList); //if(t.Result.retryInfo != null) //{ if (t.Result.LogErrorInfo.IsError) { t.Result.LogErrorInfo.ErrorRetryInfo.head = endTmp.head; db.RetryInfos.Add(t.Result.LogErrorInfo.ErrorRetryInfo); //} } if (t.Result.LogErrorInfo.HasMore) { t.Result.LogErrorInfo.ErrorMoreInfo.head = endTmp.head; db.MoreInfos.Add(t.Result.LogErrorInfo.ErrorMoreInfo); //} } } db.Times.Add(endTmp); try { db.SaveChanges(); } catch (DbEntityValidationException e) { Console.WriteLine(e); } } }