All Projects → irmen → Pyro5

irmen / Pyro5

Licence: mit
Pyro 5 - Python remote objects for modern python versions

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Pyro5

Dnpipes
Distributed Named Pipes
Stars: ✭ 452 (+267.48%)
Mutual labels:  ipc, distributed-systems
Scalecube Services
ScaleCube Services is a high throughput, low latency reactive microservices library built to scale. it features: API-Gateways, service-discovery, service-load-balancing, the architecture supports plug-and-play service communication modules and features. built to provide performance and low-latency real-time stream-processing. its open and designed to accommodate changes. (no sidecar in a form of broker or any kind)
Stars: ✭ 482 (+291.87%)
Mutual labels:  ipc, distributed-systems
Pyro4
Pyro 4.x - Python remote objects
Stars: ✭ 641 (+421.14%)
Mutual labels:  ipc, distributed-systems
Etcd
Distributed reliable key-value store for the most critical data of a distributed system
Stars: ✭ 38,238 (+30987.8%)
Mutual labels:  distributed-systems
Nginx Lua Redis Rate Measuring
A lua library to provide distributed rate measurement using nginx + redis, you can use it to do a throttling system within many nodes.
Stars: ✭ 109 (-11.38%)
Mutual labels:  distributed-systems
Scalecube Cluster
ScaleCube Cluster is a lightweight Java VM implementation of SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol. features cluster membership, failure detection, and gossip protocol library.
Stars: ✭ 119 (-3.25%)
Mutual labels:  distributed-systems
Dtcraft
A High-performance Cluster Computing Engine
Stars: ✭ 122 (-0.81%)
Mutual labels:  distributed-systems
Awesome Distributed Systems
Awesome list of distributed systems resources
Stars: ✭ 1,466 (+1091.87%)
Mutual labels:  distributed-systems
Sandglass
Sandglass is a distributed, horizontally scalable, persistent, time sorted message queue.
Stars: ✭ 1,531 (+1144.72%)
Mutual labels:  distributed-systems
Circuitbreaker.net
Circuit Breaker pattern for .NET
Stars: ✭ 116 (-5.69%)
Mutual labels:  distributed-systems
Xaynet
Xaynet represents an agnostic Federated Machine Learning framework to build privacy-preserving AI applications.
Stars: ✭ 111 (-9.76%)
Mutual labels:  distributed-systems
Pegasus
Pegasus Workflow Management System - Automate, recover, and debug scientific computations.
Stars: ✭ 110 (-10.57%)
Mutual labels:  distributed-systems
Raft Rs
Raft distributed consensus algorithm implemented in Rust.
Stars: ✭ 1,859 (+1411.38%)
Mutual labels:  distributed-systems
Dotnet Istanbul Microservices Demo
This is the demo application that i created for my talk 'Microservice Architecture & Implementation with Asp.Net Core' at Dotnet İstanbul Meetup Group.
Stars: ✭ 109 (-11.38%)
Mutual labels:  distributed-systems
Orbit
Orbit - Virtual actor framework for building distributed systems
Stars: ✭ 1,585 (+1188.62%)
Mutual labels:  distributed-systems
Micro
Micro is a distributed cloud operating system
Stars: ✭ 10,778 (+8662.6%)
Mutual labels:  distributed-systems
Zatt
Python implementation of the Raft algorithm for distributed consensus
Stars: ✭ 119 (-3.25%)
Mutual labels:  distributed-systems
Genie
Distributed Big Data Orchestration Service
Stars: ✭ 1,544 (+1155.28%)
Mutual labels:  distributed-systems
Zetaipc
A tiny .NET library to do inter-process communication (IPC) between different processes on the same machine.
Stars: ✭ 111 (-9.76%)
Mutual labels:  ipc
Playground
A new kind of virtual event platform 🐧
Stars: ✭ 120 (-2.44%)
Mutual labels:  distributed-systems

Pyro5

Remote objects communication library, fifth major version

.. image:: https://img.shields.io/badge/say-thanks-ff69b4.svg :target: https://saythanks.io/to/irmen

.. image:: https://travis-ci.org/irmen/Pyro5.svg?branch=master :target: https://travis-ci.org/irmen/Pyro5

.. image:: https://img.shields.io/pypi/v/Pyro5.svg :target: https://pypi.python.org/pypi/Pyro5

.. image:: https://anaconda.org/conda-forge/pyro5/badges/version.svg :target: https://anaconda.org/conda-forge/pyro5

.. image:: https://img.shields.io/lgtm/grade/python/g/irmen/Pyro5.svg?logo=lgtm&logoWidth=18 :target: https://lgtm.com/projects/g/irmen/Pyro5/context:python

.. image:: https://img.shields.io/lgtm/alerts/g/irmen/Pyro5.svg?logo=lgtm&logoWidth=18 :target: https://lgtm.com/projects/g/irmen/Pyro5/alerts

Info

Pyro 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, and Pyro takes care of locating the right object on the right computer to execute the method. It is designed to be very easy to use, and to stay out of your way. But it also provides a set of powerful features that enables you to build distributed applications rapidly and effortlessly. Pyro is a pure Python library and runs on many different platforms and Python versions.

Pyro is copyright © Irmen de Jong ([email protected] | http://www.razorvine.net). Please read the file license.

Pyro can be found on Pypi as Pyro5 <http://pypi.python.org/pypi/Pyro5/>_. Source is on Github: https://github.com/irmen/Pyro5 Documentation is here: https://pyro5.readthedocs.io/

Pyro5 is the current version of Pyro. Pyro4 <https://pyro4.readthedocs.io/>_ is the predecessor that only gets important bugfixes and security fixes, but is otherwise no longer being improved. New code should use Pyro5 if at all possible.

Features

  • written in 100% Python so extremely portable, supported on Python 3.6 and newer, and Pypy3
  • works between different system architectures and operating systems.
  • able to communicate between different Python versions transparently.
  • defaults to a safe serializer (serpent <https://pypi.python.org/pypi/serpent>_) that supports many Python data types.
  • supports different serializers (serpent, json, marshal, msgpack).
  • can use IPv4, IPv6 and Unix domain sockets.
  • optional secure connections via SSL/TLS (encryption, authentication and integrity), including certificate validation on both ends (2-way ssl).
  • lightweight client library available for .NET and Java native code ('Pyrolite', provided separately).
  • designed to be very easy to use and get out of your way as much as possible, but still provide a lot of flexibility when you do need it.
  • name server that keeps track of your object's actual locations so you can move them around transparently.
  • yellow-pages type lookups possible, based on metadata tags on registrations in the name server.
  • support for 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.
  • remote iterator on-demand item streaming avoids having to create large collections upfront and transfer them as a whole.
  • you can define timeouts on network communications to prevent a call blocking forever if there's something wrong.
  • remote exceptions will be raised in the caller, as if they were local. You can extract detailed remote traceback information.
  • http gateway available for clients wanting to use http+json (such as browser scripts).
  • stable network communication code that has worked reliably on many platforms for over a decade.
  • can hook onto existing sockets created for instance with socketpair() to communicate efficiently between threads or sub-processes.
  • possibility to integrate Pyro's event loop into your own (or third party) event loop.
  • three different possible instance modes for your remote objects (singleton, one per session, one per call).
  • many simple examples included to show various features and techniques.
  • large amount of unit tests and high test coverage.
  • reliable and established: built upon more than 20 years of existing Pyro history, with ongoing support and development.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].