0

我正在使用 pyrserve 从 python 调用 R 脚本文件。我有 rserve 正在运行。在 R 脚本中的任意点,pyrserve 给出错误并退出:

Traceback (most recent call last):
  File "scriptV2.py", line 272, in <module>
    rConn.eval("source(file.PropensityFlow)")
  File "/Users/dipayanmaiti/Py3.3venv/lib/python3.3/site-packages/pyRserve/rconn.py", line 47, in decoCheckIfClosed
    return func(self, *args, **kw)
  File "/Users/dipayanmaiti/Py3.3venv/lib/python3.3/site-packages/pyRserve/rconn.py", line 119, in eval
    return rparse(src, atomicArray=atomicArray)
  File "/Users/dipayanmaiti/Py3.3venv/lib/python3.3/site-packages/pyRserve/rparser.py", line 539, in rparse
    return rparser.parse()
  File "/Users/dipayanmaiti/Py3.3venv/lib/python3.3/site-packages/pyRserve/rparser.py", line 349, in parse
    self.lexer.readHeader()
  File "/Users/dipayanmaiti/Py3.3venv/lib/python3.3/site-packages/pyRserve/rparser.py", line 94, in readHeader
    self.responseCode = struct.unpack(b'<i', self.read(3) + b'\x00')[0]
  File "/Users/dipayanmaiti/Py3.3venv/lib/python3.3/site-packages/pyRserve/rparser.py", line 149, in read
    raise EndOfDataError()
pyRserve.rparser.EndOfDataError

我设置rserv.conf了以下内容:

maxinbuf 20000000
maxsendbuf 0

有人知道为什么会这样吗?这看起来像是一些缓冲区问题,因为 R 脚本自己运行。

4

1 回答 1

0

这是一个较晚的答案,但在这种情况下,在调试模式下运行 Rserve 很有用,因此可以在单独的 shell 中监视其输出。

R CMD Rserve.dbg

在极少数情况下,我看到 Rserve 向控制台打印警告,当这种情况发生时,通过 pyRserve 发送的命令没有从 Rserve 返回任何值——这导致了上面的“EndOfDataError”。

于 2014-07-17T15:47:25.623 回答