【问题标题】:Proper way to use Hangfire job in azure在 azure 中使用 Hangfire 作业的正确方法
【发布时间】:2018-10-04 12:49:27
【问题描述】:

我在我的 Asp.Net Core Web API 应用程序中使用 Hang Fire,该应用程序部署在 azure 应用服务中。

我们需要运行一些 CPU 密集型和长时间运行的作业。是否可以创建一个不同的应用服务并部署一个全新的项目来运行该应用服务中的作业?但这将连接到另一个 App 服务所连接的同一个数据库。这可以吗?还是会成为问题?

谢谢, 乔

【问题讨论】:

  • 您不应该为此使用 ASP.NET Core(如果您打算在自己的 ASP.NET Core 应用程序中运行它,您的问题并不清楚),因为 Web 应用程序往往是关闭的/ IIS 随时关闭(资源不足、空闲、配置重新加载),即使设置空闲时间也不能保证。您应该为此使用后台任务(又名 WebJobs)

标签: asp.net-core hangfire


【解决方案1】:

如果您使用 Hangfire 从 Web 应用程序中安排作业,Hangfire 轮询器可能会保持应用程序足够繁忙,永远不会闲置。否则,启用 Always-On should prevent 任何(非灾难性)关闭,因此轮询器可以始终运行。

但是,如果您像我一样,您或您的客户希望应用程序在可能的情况下停止运行。因此,您可以使用 WebJobs 或其他 Azure 平台调度和排队工具来调度您的任务,这些工具专为您的场景而设计。 WebJob 可以触发 Hangfire 管理的仅用于持久性的任务,而不是用于调度。托管任务代码可以存在于原始 Web 应用中。

换句话说,如果您因为担心 Web 应用程序的可靠性,或者因为您认为这是最佳实践而创建单独的应用程序服务,我会说不要打扰。

另一方面,如果您知道部署另一个应用服务所增加的复杂性和潜在成本是可以接受的,并且您有这样做的理由,我认为这很好。使用单独的应用程序,您可以重新启动或关闭一个应用程序,而无需关闭另一个应用程序。

【讨论】:

    猜你喜欢
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多