wiki:Notes/PythonXMLRPC

Use of XMLRPC in Python

Highly useful and highly insecure. However, it's highly useful ... see wiki:PyWacket/Capabilities.

  • Desktop / Server Integration via XML-RPC is possible
  • Desktop / Public Server Integration via XML-RPC is not possible,
    unless tunneled to localhost or intermittent ( start/stop on demand )

Built in Python support.

See http://pymotw.com/2/SimpleXMLRPCServer/

XMLRPC Remote Objects

Pyro

Deserves consideration for local network applications.

https://pypi.python.org/pypi/Pyro4

Pyro means PYthon Remote Objects. It is a library that enables you to build applications in which objects can talk to each other over the network, with minimal programming effort.

You can just use normal Python method calls, with almost every possible parameter and return value type, and Pyro takes care of locating the right object on the right computer to execute the method.

Home Page http://pythonhosted.org/Pyro4/
Repository https://github.com/irmen/Pyro4

http://pythonhosted.org/Pyro4/intro.html#about-pyro-feature-overview

Here’s a quick overview of Pyro’s features:

  • 100% Python so extremely portable.
  • Defaults to a safe serializer (serpent) that supports many Python data types.
  • Supports different serializers (serpent, json, marshal, pickle).
  • Support for all Python data types that are pickleable when using the ‘pickle’ serializer [1].
  • Runs on normal Python 2.x, Python 3.x, IronPython, Jython 2.7, Pypy.
  • Works between systems on different architectures and operating systems (64-bit, 32-bit, Intel, PowerPC...)
  • Name Server that keeps track of your object’s actual locations so you can move them around transparently.
  • Automatic reconnection to servers in case of interruptions.
  • Automatic proxy-ing of Pyro objects which means you can return references to remote objects just as if it were normal objects.
  • One-way invocations for enhanced performance.
  • Batched invocations for greatly enhanced performance of many calls on the same object.
  • Define timeouts on network communications to prevent a call blocking forever if there’s something wrong.
  • Asynchronous invocations if you want to get the results ‘at some later moment in time’.
  • Remote exceptions will be raised in the caller, as if they were local. You can extract detailed remote traceback information.
  • Stable network communication code that works reliably on many platforms.
  • Use Pyro’s own event loop, or integrate it into your own (or third party) event loop.
  • Examples included to show various features and techniques.
  • Unit tests and high test coverage.
  • Native client library available for .NET and Java (provided separately, called Pyrolite).
  • HTTP Gateway available for clients wanting to use http+json (such as browser scripts).
  • IPv4, IPv6 and Unix domain sockets.
  • More than 15 years of existing Pyro history, with ongoing support and development

RPyC

https://pypi.python.org/pypi/rpyc/3.3.0

RPyC (pronounced like are-pie-see), or Remote Python Call, is a transparent library for symmetrical remote procedure calls, clustering, and distributed-computing.

RPyC makes use of object-proxying, a technique that employs python’s dynamic nature, to overcome the physical boundaries between processes and computers, so that remote objects can be manipulated as if they were local.

http://rpyc.readthedocs.org/en/latest/

Features

  • Transparent - access to remote objects as if they were local; existing code works seamlessly with both local or remote objects.
  • Symmetric - the protocol itself is completely symmetric, meaning both client and server can serve requests .. invoke callbacks on the client side.
  • Synchronous and asynchronous operation
  • Platform Agnostic - 32/64 bit, little/big endian, Windows/Linux/Solaris/Mac... access objects across different architectures.
  • Low Overhead - RpyC takes an all-in-one approach, using a compact binary protocol, and requiring no complex setup (name servers, HTTP, URL-mapping, etc.)
  • Secure - employs a Capability based security model; intergrates easily with SSH
  • Zero-Deploy Enabled – Read more about Zero-Deploy RPyC
  • Integrates with TLS/SSL, SSH and inetd.

XMLRPC Server Tools

Twisted

See wiki:/Notes/PythonTwisted

https://twistedmatrix.com/documents/14.0.0/web/howto/xmlrpc.html

http://cyclone.io/

Tornado

See wiki:/Notes/PythonTornado

https://pypi.python.org/pypi/tornadorpc/0.1.1

Multiprocessing

More powerful than it looks ... and no dependencies

See wiki:/Notes/PythonMultiprocessing

See wiki:/Notes/Messaging

Last modified 2 years ago Last modified on 04/13/2015 07:20:43 PM