All Projects → irmen → Pyro4

irmen / Pyro4

Licence: mit
Pyro 4.x - Python remote objects

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Pyro4

Pyro5
Pyro 5 - Python remote objects for modern python versions
Stars: ✭ 123 (-80.81%)
Mutual labels:  ipc, distributed-systems
Dnpipes
Distributed Named Pipes
Stars: ✭ 452 (-29.49%)
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 (-24.8%)
Mutual labels:  ipc, distributed-systems
Awesome Distributed Systems
Awesome list of distributed systems resources
Stars: ✭ 512 (-20.12%)
Mutual labels:  distributed-systems
Corfudb
A cluster consistency platform
Stars: ✭ 539 (-15.91%)
Mutual labels:  distributed-systems
Minecase
Minecraft server based on Orleans
Stars: ✭ 581 (-9.36%)
Mutual labels:  distributed-systems
Aeron
Efficient reliable UDP unicast, UDP multicast, and IPC message transport
Stars: ✭ 5,782 (+802.03%)
Mutual labels:  ipc
Maelstrom
A workbench for writing toy implementations of distributed systems.
Stars: ✭ 493 (-23.09%)
Mutual labels:  distributed-systems
Mappedbus
Mappedbus is a low latency message bus for Java microservices utilizing shared memory. http://mappedbus.io
Stars: ✭ 613 (-4.37%)
Mutual labels:  ipc
Neutrino
Privacy-Preserving Bitcoin Light Client
Stars: ✭ 564 (-12.01%)
Mutual labels:  distributed-systems
Faang
Facebook, Amazon, Apple, Netflix and Google (FAANG) Job preparation.
Stars: ✭ 557 (-13.1%)
Mutual labels:  distributed-systems
Reactivemanifesto
The Reactive Manifesto
Stars: ✭ 542 (-15.44%)
Mutual labels:  distributed-systems
Pixie
Instant Kubernetes-Native Application Observability
Stars: ✭ 589 (-8.11%)
Mutual labels:  distributed-systems
Cadence
Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.
Stars: ✭ 5,522 (+761.47%)
Mutual labels:  distributed-systems
Sensu Go
Simple. Scalable. Multi-cloud monitoring.
Stars: ✭ 625 (-2.5%)
Mutual labels:  distributed-systems
Iotex Core
Official implementation of IoTeX blockchain protocol in Go.
Stars: ✭ 505 (-21.22%)
Mutual labels:  distributed-systems
Elasticdl
Kubernetes-native Deep Learning Framework
Stars: ✭ 604 (-5.77%)
Mutual labels:  distributed-systems
Git Bug
Distributed, offline-first bug tracker embedded in git, with bridges
Stars: ✭ 5,431 (+747.27%)
Mutual labels:  distributed-systems
Pachyderm
Reproducible Data Science at Scale!
Stars: ✭ 5,305 (+727.61%)
Mutual labels:  distributed-systems
Golimit
Golimit is Uber ringpop based distributed and decentralized rate limiter
Stars: ✭ 581 (-9.36%)
Mutual labels:  distributed-systems

saythanks Build Status Latest Version Anaconda-Server Badge Code Quality: Python Total Alerts

PYRO - Python Remote Objects

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 to call objects on other machines. Pyro is a pure Python library so it runs on many different platforms and Python versions.

This software is copyright (c) by Irmen de Jong ([email protected]).

This software is released under the MIT software license. This license, including disclaimer, is available in the 'LICENSE' file.

Pyro5

Pyro4 is considered feature complete and new development is frozen. Only very important bug fixes (such as security issues) will still be made to Pyro4. New development, improvements and new features will only be available in its successor Pyro5: https://pyro5.readthedocs.io New code should strongly consider using Pyro5 unless a feature of Pyro4 is strictly required. Older code should consider migrating to Pyro5. It provides a (simple) backwards compatibility api layer to make the porting easier.

Documentation

Documentation can be found online at: http://pyro4.readthedocs.io (or unformatted here in the repo at: docs/source/intro.rst)

Feature overview

Pyro 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. It is designed to be very easy to use, and to generally 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.

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

  • written in 100% Python so extremely portable, runs on Python 2.7, Python 3.5 and newer, IronPython, Pypy 2 and 3.
  • 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, pickle, cloudpickle, dill).
  • 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.
  • asynchronous invocations if you want to get the results 'at some later moment in time'. Pyro will take care of gathering the result values in the background.
  • 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 works reliably on many platforms.
  • can hook onto existing sockets created for instance with socketpair() to communicate efficiently between threads or sub-processes.
  • possibility to use Pyro's own event loop, or integrate it 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 15 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].