【问题标题】:Rserve unable to re-establish healthy connection after SIGPIPESIGPIPE 后 Rserve 无法重新建立健康连接
【发布时间】:2021-03-28 16:32:43
【问题描述】:

我正在研究 Rserve 内部结构。我已经使用 Rserve 几个星期了,它大部分时间都很好用。然而,随着我开始更多地推动它(更大的数据集,更复杂的功能),我意识到我需要更好地了解正在发生的事情。具体来说,我看到了这个错误:

第一个请求被发送:

> library(Rserve)
> run.Rserve(config.file = "Rserve.conf")
-- running Rserve in this R session (pid=6), 1 server(s) --
(This session will block until Rserve is shut down)
Error in run.Rserve(config.file = "Rserve.conf") : 
  ignoring SIGPIPE signal
Execution halted

在下一个 Rserve 请求之前需要一段时间...

Error in file() : cannot open the connection
Calls: CallC19 -> <Anonymous> -> retfun -> capture_output -> file
In addition: Warning message:
In file() :
  cannot open file '/tmp/RtmpvX0AqD/Rf1d72f3ac9c': No such file or directory

随后的每个请求都会出现此错误,但每次都有新的文件路径。

我会假设我的依赖项之一是创建该临时文件,除了关于无法打开连接的那一点。 Rserve 是否将其对文件的响应缓冲到客户端?

我的下一步是搜索源代码,但我希望有人可以节省我的时间,或者至少向我指出一些有关 Rserve 实现细节的文档...

  • R 版本:3.6.3
  • Rserve 版本:Rserve_1.8-7
  • pyRserve 版本:0.9.2
  • 操作系统:Debian Bullseye

【问题讨论】:

    标签: python rserve


    【解决方案1】:

    这只是一个猜测,但该临时文件可能包含有关 RServe 所需连接的一些信息。当您收到 sigpipe 错误时,原始进程可能不会被正确终止,并且该文件在某种程度上是硬关机留下的工件。

    您能否获得有关该文件中内容的更多信息?

    我不久前使用了 RServe 和一些相关的东西,但我们决定不使用它,因为该生态系统没有得到很好的支持。如果可能的话,我建议切换到烧瓶和 numpy/scipy。

    【讨论】: