zoukankan      html  css  js  c++  java
  • 并行执行同步任务

    同步执行多个任务:Parallel.For(1, pageCount + 1, i => DataSync(i, fieldMappings));

    /// <summary>
            /// 定时同步逻辑
            /// </summary>
            /// <returns></returns>
            public bool SyncGuest()
            {
                // 获取总数
                var totalCount = GetTotalCount(EVENTID);
    
                if (totalCount == 0)
                {
                    Console.WriteLine("没有需要同步的数据");
    
                    return true;
                }
    
                // 页数
                int pageCount = (int)Math.Ceiling((double)(totalCount / 50.0));
    
                // 发布后运行路径
                var mappingFilePath = Path.GetFullPath($"{AppDomain.CurrentDomain.BaseDirectory}/Json/ZFCateCertFieldMapping.json");
                // 本地运行路径
                //var mappingFilePath = Path.GetFullPath("../../Json/ZFCateCertFieldMapping.json");
                var fieldMappings = JsonConvert.DeserializeObject<List<ZFCateCertFieldMapping>>(File.ReadAllText(mappingFilePath));
    
                if (fieldMappings != null)
                {
                     // 并行执行同步任务
                    var result = Parallel.For(1, pageCount + 1, i => DataSync(i, fieldMappings));
    
                     return result.IsCompleted ? true : false;
                }
                else
                {
                    Console.WriteLine("大会的配置字段文件为空,不能同步");
                    FileLogHelper.Log("大会数据同步数据失败-字段匹配失败:匹配字段为空。");
                }
    
                return true;
            }
    /// <summary>
            /// 并行同步数据
            /// </summary>
            /// <param name="pageIndex">分页中的第几页</param>
            /// <returns>返回的是成功与失败的条数消息</returns>
            private void DataSync(int pageIndex, List<ZFCateCertFieldMapping> fieldMappings)
            {
                const long eventId = EVENTID;
    
                var query = new HYQuery<QueryEventJoin>()
                    .EQ(a => a.EventId, eventId)
                    .EQ(a => a.Status, HYEventJoin.JoinStatus.已审核)
                    .FieldNamesEQ("ExtraFields.Field1585023508", "政审通过");
    
                // 如果不是同步所有数据,则需要加上时间限制
                if (!IsSyncAll)
                {
                    query = query.And(GetDateQuery());
                }
    
                // 分页取数据
                var res = RestHelper.EventJoin.GetJoins(eventId, query, pageIndex, 50);
    
                if (res.IsOk() && res.Body.List.Any())
                {
                    // 开始同步
                    BeginDataSync(res.Body.List, fieldMappings);
                }
                else
                {                
                    FileLogHelper.Log("大会数据同步数据失败-获取参会人出错或没有需要同步的数据");
                }
            }

    执行完后,有个状态,表示是否执行完

    // 并行执行同步任务
                    var result = Parallel.For(1, pageCount + 1, i => DataSync(i, fieldMappings));
    
                    return result.IsCompleted ? true : false;
  • 相关阅读:
    Emacs for OIer 的一些配置
    CF1336E Chiori and Doll Picking 【线性代数,组合计数】
    CF605E Intergalaxy Trips 【贪心,动态规划,期望】
    Luogu6329 【模板】点分树 | 震波
    [SDOI2014]数表
    [BZOJ4403]序列统计
    [BZOJ5099]Pionek
    SP1812 LCS2
    SA & SAM
    [HAOI2016]找相同字符
  • 原文地址:https://www.cnblogs.com/yxzs/p/11199901.html
Copyright © 2011-2022 走看看