【问题标题】:Can I run infinite loop in the background in ASP.NET CORE IIS我可以在 ASP.NET CORE IIS 的后台运行无限循环吗
【发布时间】:2021-08-12 11:07:19
【问题描述】:

在 startup.cs 结束时,我有一个每秒无限运行的循环。循环每秒更新一次数据库。服务器部署在 windows IIS (AWS EC2) 上。

我想知道,在服务器第一次启动后,即使没有任何流量到服务器,它是否会无限运行(每秒)?或者如果服务器没有流量并在有人来到服务器时再次启动(再次运行startup.cs),它会在一段时间后停止吗?例如,如果我们在 1 个月内没有流量,它会在后台运行 1 个月还是停止?

更新 轮流我们的循环将在 5 - 10 分钟后被移除。有什么方法可以实现这一点(在没有任何流量的情况下运行一个月的循环)?

更新 2 超时是 AWS EC2 https://aws.amazon.com/blogs/aws/elb-idle-timeout-control(我无权访问)中的一个设置,感谢任何建议。

更新 3 我能够通过将计时器逻辑分离到控制台应用程序并在 ec2 中运行来解决此问题。

【问题讨论】:

  • AWS 确实为这种轮询应用程序提供了 Lambda 之类的服务,因此求助于 ASP.NET Core 是很差的洞察力。

标签: asp.net-core iis amazon-ec2 amazon-elastic-beanstalk


【解决方案1】:

【讨论】:

  • 托管服务通常部署为 Windows/Linux 服务应用程序,而不是在 IIS 上运行的 Web 应用程序。
  • Lex,您是否阅读了链接中的文档?该技术被命名为“托管服务”,允许您编写代码以在 Web 应用程序上下文中运行后台任务。
  • 在 IIS 上的 ASP.NET Core Web 应用程序中部署托管服务很麻烦(类似于运行 Hangfire blog.lextudio.com/unpleasant-facts-about-hangfire-632a3228ff8a)。 Microsoft 不喜欢将所有内容都放在文档中的想法,因此只有在您尝试时才会遇到问题。
  • Lex,这是一个架构/设计决策——我刚刚发布了原始问题的答案;只是有可能。原发帖人要不要用这个是他们的决定。是的,我也知道 Hangfire。 (关于这些问题的任何决定都需要考虑项目背景..)
猜你喜欢
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 2017-01-30
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多