【问题标题】:Is it possible to attach to a running background process with ruby?是否可以使用 ruby​​ 附加到正在运行的后台进程?
【发布时间】:2017-12-20 16:05:52
【问题描述】:

我有一个 nodejs 守护程序在我的服务器上运行,我想在标准输入上给他一些输入并从 Rails 控制器读取标准输出,Ruby 可以吗?

我正在查看Open3,但它似乎只给了我产生新进程的机会。

我需要保持 nodejs 进程运行,因为启动开销太高,无法在每个请求时调用。

【问题讨论】:

  • 您可以设置 Node 进程来运行服务器并接受给定端口上的输入。然后只需从 Ruby 向 Node 发出网络请求
  • 一个HTTP请求的开销相当高
  • 毫无疑问...如果您没有其他方法可以这样做(我不是 Ruby 人),那只是一个想法。不过,您实际上可以低于 HTTP,使用 Net API 使其成为直接的 TCP 请求
  • 可能是一个解决方案,感谢您的建议
  • 如果请求非常频繁,甚至本地 HTTP 也有很大的开销,请尝试 Unix 域套接字。

标签: node.js ruby daemon


【解决方案1】:

一般来说,除非最初设置为附加到正在运行的进程的 IO 流,否则无法附加。例如,如果将进程设置为从 pipe 读取,这很容易:只需让 Ruby 像任何其他文件一样写入该管道(这就是 Open3 库所做的)。

对于守护进程,通常有比使用管道劫持其输入更合适的方式与之交互,尽管这取决于您正在运行的特定守护进程以及操作系统如何管理它。例如,sockets 是与 *nix 系统上正在运行的进程通信的一种流行方式。

【讨论】:

    猜你喜欢
    • 2011-05-09
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多