Example #1
0
        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);
                            }
                        }
                    }
                }
            }
        }
Example #2
0
        //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);
                }
            }
        }