Skip to content

RPC through ZeroMQ - using ZeroRPC but with one (or two) extra things

Notifications You must be signed in to change notification settings

tarekziade/onerpc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

OneRPC

Prototype of an RPC framework to build Services that can be used as libraries or as client/server.

Step #1 - write your library in plain Python

Example -- a science.py module:

def multiplication(one, two):
    """Returns one * two

    Options: one and two
    """
    return int(one) * int(two)

Step #2 - use it it your code with onerpc.Service

Example:

from onerpc import Service

science_service = Service('science')
print science_service.multiplication(3, 5)

The only difference with plain Python is the Service indirection,

When called, the code will be called directly unless configured otherwise.

In other words, everything will be running in pure Python and you will get the usual traceback, pdb and so on.

The service name must be the fully qualified importable name you would use with an import statement. For example, if you have an elasticsearch module in a apps packages, you would use:

es = Service('elasticsearch.apps')

Step #3 - at deployment time, chose where to run the Service

The interesting thing happens when the application is deployed.

Beside plain Python, the Service can run on ITC, IPC or TCP

Example with TCP on port 1234 -- server-side:

$ zerorpc --server --bind tcp://0.0.0.0:1234 science

On the client-side, a locate_service() function can be used to point the application to the right endpoint in the Application startup code:

# application init time...
from onerpc import locate_service
locate_service('science', 'tcp://0.0.0.0:1234')

# the code, as before...
from onerpc import Service

science_service = Service('science')
print science_service.multiplication(3, 5)

About

RPC through ZeroMQ - using ZeroRPC but with one (or two) extra things

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages