Hangfire Shutdown不等待杀死进程

时间:2014-11-24 06:03:37

标签: asp.net background-process hangfire

我们已将Hangfire配置为使用tutorial中提供的OWIN作为我们的网络应用程序的一部分运行。

我们通过我们提供的API将长时间运行的后台进程排入队列。我们运行的作业使用.Net Process类在后台初始化R进程。 R代码在内部产生许多进程以更快地完成作业。当作业运行时,我们在任务管理器中运行了许多Rscript进程。

手动回收我们的Web应用程序的应用程序池(以查看进程重启的工作原理)Rscript进程未被杀死。我们有一个自定义杀戮策略,我们可以摆脱代码中的所有Rscript进程。

while (IsNotTimedOut())
{
    try
    {
        _token.ThrowIfCancellationRequested();
        Thread.Sleep(2000);
    }
    catch (OperationCanceledException)
    {
        Kill();
        throw;
    }
}

在kill方法中,我们使用Process.WaitForExit()方法阻止。

当我们进行手动回收时,所有过程都不会被杀死。杀死几个Rscript进程后,当前线程而不是阻止进程杀死只是死亡。

hangfire代码似乎只是取消了令牌,它似乎没有等待正在侦听取消令牌的进程被杀死。请有人建议我们如何使其正常工作,如果需要更多详细信息,请与我们联系?

0 个答案:

没有答案