Ошибка конца данных при использовании PyRserve
Я вызываю файл сценария R из python, используя pyrserve. У меня есть резерв. В произвольных точках в 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 запускается сам по себе.
1 ответ
Это поздний ответ, но в таких ситуациях полезно запускать Rserve в режиме отладки, чтобы его вывод можно было отслеживать в отдельной оболочке.
R CMD Rserve.dbg
В некоторых редких случаях я видел, как Rserve выводит предупреждения на консоль, и когда это произошло, команда, отправленная через pyRserve, не возвращала никакого значения из Rserve - что привело к "EndOfDataError" выше.