【发布时间】:2015-06-13 09:16:00
【问题描述】:
我有一个基于事件机的应用程序,我想将其作为守护程序运行,因此我可以轻松启动停止它。
我正在尝试使用守护进程 gem,但它似乎只是跳过了 EM 运行循环并在脚本末尾死亡。
一个例子:
require 'daemons'
require 'eventmachine'
require 'logging'
logger = Logging.logger['DAEMON']
logger.level = :debug
logger.add_appenders \
Logging.appenders.file('logs/daemon.log')
Daemons.daemonize
File.open('/tmp/mydaemon.pid', 'w') { |f| f.puts(Process.pid) }
EM.run {
EM.add_periodic_timer(1) { logger.info "I'm logging in a daemon" }
}
我也尝试过在 Daemon.run 或 Process.daemon 中执行此操作,但没有更好的运气。有什么想法吗?
【问题讨论】:
-
在调用 daemonize 之后或之后会停止执行吗?
-
之后。它从终端分离,创建 pid 文件,然后什么都没有发生。日志中从未出现任何内容(如果我禁用守护进程,则日志会接收输入)
-
我从 gem 中提供的示例中提取了代码并制作了 this。它工作正常。这是否会将问题隔离到记录器?
标签: ruby daemon eventmachine