hmm, this is indeed strange. From the pyRserve point of view such an exception can only be raised if the exception is delivered from the remote side.
The question is whether Rserve on the remote side shows the exception, but doesn't deliver it, or whether pyRserve receives the exception, but doesn't raise it.
Is this problem reproducible? If so, would you be able to condense your R code into very few lines of code so that I can play with it?
(Please post your answer to this mailing list, not to my private email address)
Ralph
Sure. I'm running:
Rserve Machine (VM):
OS: SLES 11-SP2
R: 2.15-3
Rserve: 1.7-0
Client Machine:
OS: Debian Wheezy
pyRserve: 0.7.0
I'm
using Celery to automate some batch data processing. I have a Celery
worker on the client machine that conditions some data, creates a
connection to an Rserve host, runs some R routines on said data, and
retrieves the result. Occasionally, the R routines will throw an error.
If I host the Rserve instance on the same client machine as the
worker, pyRserve raises the REvalError exception as expected. However,
if worker creates a a connection to an Rserve instance on a remote host,
the exception isn't raised. I ran Rserve in debug mode and the REval
error is thrown in the Rserve instance, but no exception is returned to
the Celery worker.
As a workaround, I simply
added a few tryCatch() statements to my R code to return an NULL value
in the event of an error. I thought I'd ask about this behavior,
however.