当前位置: 首页 > news >正文

哪些是 joomla做的网站免费插画素材网站

哪些是 joomla做的网站,免费插画素材网站,医疗培训网站建设,2023年8月份新冠症状【导读】本节我们继续稍微详细讲讲在我没有详细了解源码的前提下来探讨通过Hangfire定时触发作业有哪些需要注意的事项间隔时间内执行作业举个栗子#xff0c;每隔10秒监控系统CPU#xff0c;若CPU飙高#xff08;根据实际业务定义百分比#xff09;则在控制台打印输出每隔10秒监控系统CPU若CPU飙高根据实际业务定义百分比则在控制台打印输出第一次执行作业若CPU飙高则打印输出但在接下来一分钟内CPU连续飙高则不再打印若中间有中断CPU正常则恢复正常打印如此反复循环。一般来讲定时作业都会执行业务但上述栗子却根据作业内部逻辑判断是否执行打印所以二者还是有所区别接下来我们一步步来进行大致模拟实现首先我们利用内存来存储作业相关操作然后每隔10秒执行打印方法_colorify  new Format(Theme.Dark);GlobalConfiguration.Configuration.UseMemoryStorage();using var server  new BackgroundJobServer();RecurringJob.AddOrUpdate(()  Print(), */10 * * * * *, TimeZoneInfo.Local);Console.ReadLine(); 接下来则是执行上述打印方法public static void Print() {_colorify.WriteLine(${DateTime.Now}CPU飙高啦~~~, Colors.txtSuccess); } 待执行作业方法一定要为公共public方法否则会抛出如下异常最后我们每隔10秒执行一次作业看看打印输出时间是否如我们所预期那样虽然Hangfire从1.7开始支持秒级但对于作业默认的最小间隔时间是15秒貌似是无法改变。所以上述我们看到的作业间隔时间差是15秒而非10秒即使针对只触发一次作业设置为10秒也无济于事不知道是否可改变未深入研究var options  new BackgroundJobServerOptions {SchedulePollingInterval  TimeSpan.FromMilliseconds(10) }; BackgroundJob.Schedule(()  Print(), TimeSpan.FromSeconds(10)); 之前我们讲过若是利用SQLite存储作业那么将会出现重复并发执行的情况比如我们如下将其修改为SQLite存储GlobalConfiguration.Configuration.UseSQLiteStorage(Data Source./hangfire.db;); 此时毫无疑问会出现连续打印情况在内存中也会偶尔出现概率没有SQLit高若是必须限制在间隔时间内只能执行一次作业且在内存或SQLite中存储作业那么我们可以尝试使用限流算法漏桶算法在指定时间内只允许几个请求进入算法参考地址https://github.com/robertmircea/RateLimitersprivate static readonly FixedTokenBucket bucket  new FixedTokenBucket(1, 1, 10000); 实例化对应漏桶算法且在10秒内只能透传1个请求执行作业public static void Print() {if (bucket.ShouldThrottle(1)){return;}_colorify.WriteLine(${DateTime.Now}CPU飙高啦~~~, Colors.txtSuccess); } 若在10秒超过1个请求进入则立即返回接下来我们实现在1分钟内禁止连续打印CPU飙高的情况首先我们将1分钟内时间控制利用内存存储来实现var provider  new ServiceCollection().AddMemoryCache().BuildServiceProvider();cache  provider.GetServiceIMemoryCache(); 然后我们继续改造打印方法在内存中记录第1次打印的时间然后对比接下来1分钟的时间差若小于则返回否则打印再次存储打印的时间public static void Print() {double totalMinutes  0;if (cache.TryGetValue(sys_alarm_time, out DateTime time)){var subtract  DateTime.Now.Subtract(time);totalMinutes  subtract.TotalMinutes;_colorify.WriteLine($subtract:{totalMinutes}, Colors.txtInfo);}if ((int)totalMinutes  1  totalMinutes ! 0){return;}cache.Set(sys_alarm_time, DateTime.Now);_colorify.WriteLine(${DateTime.Now}CPU飙高啦~~~, Colors.txtSuccess); } 这里唯一需要注意的是在比较时间差1分钟不能用Convert.ToInt32来进行强制转换if (Convert.ToInt32(totalMinutes)  1  totalMinutes ! 0) {return; } 利用上述强制转换不能精确到接近于1分钟因为它是银行家算法四舍五入更贴切的说是四舍六入比如为时间差为0.6时经过强制转换后结果就为1所以利用第一种强制转换则是只取整数部分虽说作业执行时间长短会略有差异但利用第1种强制转换会控制时间差不会和1分钟相差太多我们看到上述时间间隔刚好是1分钟加上默认的时间间隔15秒能做到这样基本上差不多了本节我们借助一个栗子主要讲述在控制台中执行存储在内存或SQLite中的作业在实际项目中使用Hangfire时或多或少都会存在一些问题比如我们是否考虑将作业存储在内存中那么对于间隔时间很短的定时作业是否会带来的很大的存储开销呢理论上Hangfire会对其进行处理又比如如果作业有几百个间隔时间很短的定时作业那么Hangfire是否会存在性能问题呢还有其他等在使用过程中可能遇到的问题。
http://www.huolong8.cn/news/17792/

相关文章:

  • 深圳国税局深圳做网站公司丽江建设信息网站
  • 简述网站建设的主要内容行业网站建站青岛公司
  • 深圳网站制作必荐祥奔科技ppt里做网站效果
  • 做管理信息的网站吗延吉网站建设depawo
  • 网站demo制作网络公关
  • 网站建设技术大赛试题哪家公司做企业网站
  • 网站被恶意攻击广州网站设计公司排名
  • 做落地页素材在什么网站上找网站建设先进个人自荐
  • 哪里有网站制作平台做卖衣服网站源代码
  • 栾城住房和城乡建设局网站wordpress如何写个插件
  • 注册网站请签署意见是写无怎么可以做网站的网站
  • 设计网站网站名称重庆网站制作福州
  • 网页网站开发设计工作前景网络营销方式名词解释
  • 滕州微信网站郑州网站建设哪家
  • 公司网站建设的申请wordpress mysql备份
  • 24小时自助建站行业网站有哪些平台
  • 网站建设制作设计公司wordpress禁止用户仪表盘
  • 做面包的公司网站麦进斗网站建设
  • 龙门石窟网站建设策划报告天津软件设计公司
  • 汕头 做网站哪个网站做加盟
  • 提高网站流量的软文案例seo外包公司兴田德润官方地址
  • 湖南网站seo营销多少费用wordpress无法删除插件_因为发生了错误:
  • 内蒙网站建设赫伟创意星空科技禅城南庄网站制作
  • 光谷网站建设公司智慧团建电脑版登录入口
  • 网站建设 智宇软件家居设计
  • 使用帝国备份王搬迁织梦网站做筹款的网站需要什么资质
  • 网站被黑解决方案优质手机网站建设哪家好
  • 江苏 江苏省住房和城乡建设厅网站成都网站建设推荐
  • 欧美模板网站建设如何建立国外网站
  • 汽车做网站做竞品分析的网站