0

我正在这个项目上实现 resque,我需要杀死任何排队到 resque 的东西的功能。所以,我已经看到有一种出列方法,它将从队列中删除作业。但是,如果这个作业已经开始并且正在运行,那么出队会杀死进程吗?

同样重要的是:如果作业出队,我是否获得了可以做某事的句柄,还是抛出异常?

4

2 回答 2

0

据我所知,如果它存在don't kill,它只是从队列中删除作业检查这里process

但是,如果您想实现杀死工作,那么您需要使用 resque 提供的各种信号

这是他们的清单

Resque workers respond to a few different signals:

QUIT - Wait for child to finish processing then exit
TERM / INT - Immediately kill child then exit
USR1 - Immediately kill child but don't exit
USR2 - Don't start to process any new jobs
CONT - Start to process new jobs again after a USR2

在你的情况下,如果会USR1

希望这有帮助

于 2013-07-26T12:54:17.450 回答
0

这个问题的答案实际上是使用 resque gem 的众多扩展之一,称为 resque-status。这处理工作实例,为每个实例分配一个唯一的 id(我可以用它来识别它们,我最需要的功能),并为我提供了一个在作业上调用的 kill 方法,这将保证作业将被处理下次我调用他们 API 的某个方法时发出 kill 信号(不完全是 kill 和 assign 异常,但总比没有好)。

于 2013-08-14T11:08:30.643 回答