Rserve не удалось восстановить работоспособное соединение после SIGPIPE

Я работаю над тем, чтобы разобраться во внутреннем устройстве 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 Буллсай

person Max Taggart    schedule 17.12.2020    source источник


Ответы (1)


Это всего лишь предположение, но этот временный файл может содержать некоторую информацию о соединении, необходимом для RServe. Когда вы получаете сообщение об ошибке sigpipe, исходный процесс может быть неправильно завершен, и этот файл каким-то образом является артефактом, оставшимся после жесткого завершения работы.

Можете ли вы получить больше информации о том, что находится в этом файле?

Некоторое время назад я использовал RServe и некоторые связанные с ним вещи, но мы отказались от этого, потому что эта экосистема плохо поддерживается. Если это возможно, я бы рекомендовал переключиться на flask и numpy/scipy.

person gph    schedule 18.12.2020