I am actually using web2py as a JSON-RPC service now. Using RPC, you can make a web2py application act like you are running functions on the local machine. This is most commonly used to provide a desktop application that can interface with your web service. Right now, I have a web2py installation running on a server that has a serial port connection to a piece of hardware and my application talks to the device on the other end of the serial cable. I didn't want to write a web interface for it on that same machine, as I wanted to integrate the functionality with a larger web2py application running on a web server.
So the main web server runs my web2py application as normal, and when a user needs information from the serial-connected device on the other server, my application makes a JSON-RPC call to the machine that communicates with the device, and it returns the result.