Skip to content
This repository has been archived by the owner on Mar 4, 2019. It is now read-only.

Latest commit

 

History

History
62 lines (38 loc) · 1.56 KB

server.rst

File metadata and controls

62 lines (38 loc) · 1.56 KB

Client-Server

Rserve is currently the default solution when looking for a server solution for R, but :mod:`rpy2` can be used to develop very easily one's own server, tailored to answer specific requirements. Such requirements can include for example access restriction, a security model, access to subsets of the R engine, distribution of jobs to other servers, all of which are currently difficult or impossible to achieve with R serve.

The :mod:`pyRserve` package addresses the connection to Rserve from Python, and although it frees one from handling the R server is also constrains one to use Rserve.

Simple socket-based server and client

Server

An implementation of a simplistic socket server listening on a given port for a string to evaluate as R code is straightforward with Python's SocketServer module.

Our example server will be in a file rpyserve.py, containing the following code.

.. literalinclude:: _static/demos/rpyserve.py


Running a server listening on port 9090 is then:

python rpyserve.py --hostname localhost

Client

Using Python's socket module, implementing a client is just as easy. We write the code for ours into a file rpyclient.py:

.. literalinclude:: _static/demos/rpyclient.py


Evaluating R code on a local server as defined in the previous section, listening on port 9090 is then:

echo 'R.version' | python rpyclient.py --hostname localhost

In this example, the client is querying the R version.