What features do you get?
- Written in 100% pure Python. It is small, simple and extremely portable - it runs everywhere Python runs and TCP/IP networking is available. Partial support for Jython. Minimum Python version required is 2.1.x, though the latest Python version is recommended.
- Naming Service which keeps record of the location of objects. The location of the NS can be discovered by a broadcast mechanism, and various other ways, if your network doesn't support broadcasting. NS has option to keep its naming database persistent (on disk) so that it survives shutdowns.
- High-level Event Service with topic channels.
- Mobile objects. Clients and servers can pass objects around - even when the server has never known them before. Pyro will then automatically transfer the needed Python bytecode.
- Support for Python types only restricted by those that the standard 'pickle' module handles (all builtin types, and user created classes) Objects as arguments are also supported.
- Support for all Python argument types (variable argument lists and keyword arguments,
*argsand**keywords). - Exceptions that occur in the remote object will actually be raised too on the client, just as if the error occured locally. Pyro's exception transportation mechanism makes this possible.
- Dynamic Proxies - no need for additional tools or classes.
- Direct remote attribute access with normal Python syntax.
- Server can dynamically create or remove new Pyro objects.
- Multithreaded server support to handle multiple requests simultaneously.
- Automatic reconnection in case of network connection failures.
- Fast one-way invocation possible.
- Pyro contains heavily tested network communication code that works reliable on all platforms
- Talk between 32-bit and 64-bit machines, regardless of processor architecture and operating system
- A very good manual
- A lot of examples are included in the Pyro distribution!
Security Warning! And disclaimer!
Read this carefully: Pyro is a technology that may easily expose private data to the world, if used incorrectly. While Pyro has some security related functions such as connection validators, it is imporant to understand that exposing a remote object interface in any way (with Pyro, with XMLRPC, or whatever) on an untrusted network (like the internet) possibly creates a big security risk. The risk could be because of a hole in Pyro itself or because of security issues in the used libraries (such as pickle), Python version, or even operating system. Be sure to know what you are doing when using Pyro outside a trusted network and outside trusted applications! Pyro has never been truly designed to provide a secure communication mechanism, nor has it had a security review or -test by a security expert. Read the Pyro software license and DISCLAIMER.
Having said this, if you discover a security hole or have suggestions to improve Pyro in this matter, don't hesitate to contact me about it. I will always try to improve Pyro.
