我们正在使用Azure App Services为网站运行Hangfire。我们还使用了精彩的swapping mechanism。这意味着我们不是部署到生产,而是部署一个插槽并在部署完成后进行交换。
问题是,交换槽不断从hangfire中获取作业。
我想确保只有生产槽实际上正在执行hangfire作业。挑战在于,无论是否生产,都会发生状态,无需重启应用程序(双向)。
我可以在Azure中设置插槽粘性应用程序设置,以便我可以识别我是否处于生产模式。它只是给我一个关键问题:
如何在运行时启用和禁用我的应用程序处理作业?
尝试配置触发的WebJob,它在每次调用API或达到计划时运行作业。此外,有2个配置设置来停止WebJob,
•WEBJOBS_STOPPED - 将此设置设置为1可禁用运行任何作业(也将停止当前正在运行的所有作业)。
•WEBJOBS_DISABLE_SCHEDULE - 将其设置为1可关闭所有计划的触发。与WEBJOBS_STOPPED不同,WebJobs仍然可以手动调用。
有关更多详细信息,请参阅此文章:https://github.com/projectkudu/kudu/wiki/WebJobs。