首页 > 其他分享 >托管服务

托管服务

时间:2024-08-01 22:18:22浏览次数:16  
标签:生命周期 服务 托管 IServiceScope 异常 注入

我想你一定很忙,所以你只看到前三个字就好。 --zhu
托管服务简介
1、场景,代码运行在后台。比如服务器启动的时候在后台预先加载数据到缓存,每天凌晨3点把数据导出到备份数据库,每隔5秒钟在两张表之间同步一次数据。
2、托管服务实现IHostedService接口,一般编写从BackgroundService继承的类。
测试:延迟若干秒再读取文件,再延迟,再输出。

异常问题
1、从.NET 6开始,当托管服务中发生未处理异常的时候,程序就会自动停止并退出。可以把HostOptions.BackgroundServiceExceptionBehavior设置为Ignore,程序会忽略异常,而不是停止程序。不过推荐采用默认的设置,因为“异常应该被妥善的处理,而不是被忽略”。
2、要在ExecuteAsync方法中把代码用try……catch包裹起来,当发生异常的时候,记录日志中或发警报等。

使用DI注意事项
1、托管服务是以单例的生命周期注册到依赖注入容器中的。因此不能注入生命周期为范围或者瞬态的服务。
比如注入EF Core的上下文的话,程序就会抛出异常。
2、可以通过构造方法注入一个IServiceScopeFactory服务,它可以用来创建一个IServiceScope对象,这样我们就可以通过IServiceScope来创建短生命周期的服务了。记得在Dispose中释放IServiceScope。

托管服务案例:数据定时导出
1、常驻后台的托管服务并不需要特殊的技术,我们只要让ExecuteAsync中的代码一直执行不结束就行了。
2、实现的功能就是每隔五秒钟对数据库中的数据做一下汇总,然后把汇总结果写入一个文本文件。
var items = ctx.Users.GroupBy(u => u.CreationTime.Date)
.Select(e => new { Date = e.Key, Count = e.Count() });

Hangfire拓展
Hangfire 是开源的.NET 非同步任务调度框架,并且还有丰富的扩展支持。

标签:生命周期,服务,托管,IServiceScope,异常,注入
From: https://www.cnblogs.com/zhusichen/p/18336788

相关文章

  • Linux基础命令指南七(守护进程与网络服务)
    守护进程是在执行各种任务的后台等待或运行的进程。一般情况下,守护进程在系统引导时自动启动并持续到关机或者手动将它停止。按照惯例,守护进程名称以d结尾。 在红帽Linux中,系统第一个启动的进程是systemd守护进程,它会通过使用单元(用于定义系统知道如何管理的对象)来管理不同......
  • Mojo编程语言与云服务及微服务架构的协同之道
    在当今的软件开发领域,云服务和微服务架构已经成为了构建可扩展、灵活且易于维护的应用程序的关键技术。本文将探讨一种假想的编程语言——Mojo——如何与云服务和微服务架构相结合,以实现高效、可靠的软件开发。1.引言云服务提供了按需计算资源,而微服务架构则将应用分解为......
  • 云计算19------前端服务器的配置以及tomcat环境的配置
    回顾[root@tomcat~]#cdeleme_web/public/img/[root@tomcatimg]#ls1.jpg[root@tomcatpublic]#cd[root@tomcat~]#cdeleme_web/[root@tomcateleme_web]#cdsrc[root@tomcatsrc]#vimviews/HomeView.vue [root@tomcatsrc]#nohupnpmrunserve  ctrl......
  • 性能测试-nmon 下载及使用步骤监控服务器资源
    转载https://www.cnblogs.com/xiaofeng91/p/16579262.html nmon是对linux服务器的监控 nmon工具包相关1、nmon工具包下载 地址https://nchc.dl.sourceforge.net/project/nmon/nmon16d_x86.tar.gz使用wgethttps://nchc.dl.sourceforge.net/project/nmon/nmon16d_x86.......
  • 互联网家政小程序,为大众带来高效、便捷的服务
    随着人口老龄化的严重和社会生活节奏的加快,大众对家政服务的需求日益增加,家政行业的市场规模逐渐扩大!在科技的推动下,家政行业开始向数字化发展,“互联网+家政”的模式推动了市场的快速发展。互联网家政小程序借助各种信息技术,提高家政服务中的便利性。用户直接在小程序上选择......
  • 检测Linux服务器CPU、内存、负载、IO读写、机房带宽和服务器类型的脚本
    脚本内容:#!/usr/bin/envbash####RED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[0;33m'SKYBLUE='\033[0;36m'PLAIN='\033[0m'about(){ echo"" echo"=============================......
  • GPU训Llama 3.1疯狂崩溃,竟有大厂用CPU服务器跑千亿参数大模型?
    马斯克19天建成由10万块H100串联的世界最大超算,已全力投入Grok3的训练中。与此同时,外媒爆料称,OpenAI和微软联手打造的下一个超算集群,将由10万块GB200组成。在这场AI争霸赛中,各大科技公司们卯足劲加大对GPU的投资,似乎在暗示着拥有更多、更强大的GPU,就能让自己立于不败之......
  • 关于php:从URL下载文件到服务器
    DownloadFiletoserverfromURL嗯,这个看起来很简单,确实如此。要将文件下载到服务器,只需执行以下操作:file_put_contents("Tmpfile.zip",file_get_contents("http://someurl/file.zip"));只有一个问题。如果你有一个大文件,比如100MB,怎么办?然后,您将耗尽内存,无法下载该文件......
  • Ubuntu 22.04搭建MC fabric 1.20.1服务器 和 搭建李芒果空岛
    fabric服务器首先是下载fabric服务端DownloadMinecraftServerLauncher|Fabric(fabricmc.net)拖到vps里,运行即可。java-jarfabric-server-mc.1.20.1-loader.0.15.11-launcher.1.0.1.jarnogui然后它会让你把eula.txt里面的false改成true就好。重新运行,能创建世界......
  • Python 自动创建阿里云 OSS 桶并配置静态网站托管
    在本文中,我们将介绍如何使用Python和阿里云OSSSDK自动创建OSS桶(如果不存在),并为新创建的桶配置静态网站托管。这对于自动化部署和管理静态网站非常有用。前提条件安装阿里云OSSSDK:pipinstalloss2准备好阿里云OSS的访问密钥(AccessKeyID和AccessKeySecret......