首页 > 解决方案 > SIGPIPE 后 Rserve 无法重新建立健康连接

问题描述

我正在研究 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 实现细节的文档......

标签: pythonrserve

解决方案


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

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

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


推荐阅读