2

我正在使用delayed_job 在我的rails 应用程序上运行一些后台进程。这些进程读取和写入数据库以及写入日志文件。

我的问题是 - 当我停止工作时,它会终止进程(这最终会破坏我的数据)还是等待工作结束或类似的事情?

4

1 回答 1

2

这一切都取决于您如何编写代码。

通常杀死一个工作会猛拉你的代码的插件,它会立即停止。这可能是在写入过程中或在缓冲区被刷新或文件被正常关闭之前。

如果您有必须完成的任务,您可以捕获信号。然后,您的代码可以选择忽略信号并继续运行,这不是最佳解决方案,或者它可以开始正常关闭、刷新缓冲区、关闭数据库连接、关闭文件等,然后退出。

而且,忽略信号不好的原因是操作系统会发送一些信号来告诉应用程序在系统关闭或重新启动之前关闭。不关闭的应用程序可能会让用户或系统管理员生气,然后他们会想办法让它退出,很可能是以一种不优雅的方式。

查看Signal了解更多信息。

于 2010-12-17T19:51:34.027 回答