• This repository has been archived on 04/Jun/2023
  • Stars
    star
    715
  • Rank 63,327 (Top 2 %)
  • Language
    Python
  • License
    MIT License
  • Created over 11 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Pyro 4.x - Python remote objects

Latest Version Anaconda-Server Badge

Development Halted. Switch to Pyro5 instead.

PYRO4 - 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.

Python 3.10 is the End of the Line for Pyro4

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.

Pyro4 is tested to work with Python 3.10, but Python 3.11 and beyond are going to bring changes that will start breaking certain parts of Pyro4. This is not going to be fixed anymore in Pyro4. This basically means that Python 3.10 is the end of the line for Pyro4 and that running it on later Python versions will start raising certain problems. Pyro5 WILL get updates required to keep it running without issues on future Python versions.

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.

More Repositories

1

Pyro5

Pyro 5 - Python remote objects
Python
302
star
2

synthesizer

python sample mixer and sequencer, waveform synthesizer, and sound playback engine
Python
182
star
3

Pyrolite

Java and .NET client interface for Pyro5 protocol
Java
177
star
4

pyminiaudio

python interface to the miniaudio audio playback, recording, decoding and conversion library
C
159
star
5

Tale

Interactive fiction (text adventure) and Mud framework
Python
142
star
6

prog8

high level programming language and compiler targeting 6502 machines such as the C-64 and CommanderX16
Kotlin
142
star
7

pyc64

Commodore-64 simulator in pure Python
Python
80
star
8

pickle

Java and .NET implementation of Python's pickle serialization protocol
C#
76
star
9

Serpent

serializer for literal Python expressions, also .NET and Java
Java
49
star
10

bouldercaves

Boulder Caves - a Boulder Dash (tm) clone in pure python (including level editor)
Python
34
star
11

64tass

64tass - cross assembler for 6502 etc. microprocessors - by soci/singular - [git clone from the original sourceforge repo]
C
30
star
12

cx16shell

Command line shell for the Commander X16
Lua
12
star
13

binaryen-interfaces

non-C programming language interfaces to the Binaryen library
Kotlin
11
star
14

cx16assem

File-based 65c02 assembler for Commander-X16
Lua
9
star
15

ksim65

Kotlin 6502/65C02 microprocessor simulator
Assembly
8
star
16

raycaster

Ray caster engine in Python and Kotlin/JVM
Kotlin
7
star
17

pylibxmplite

Python library that provides libxmp-lite mod file decoding
C
6
star
18

rocketsimulator

python rocket landing simulation game just using tkinter
Python
5
star
19

Pyro3

Pyro 3.x (old version - unmaintained - use Pyro4 instead)
Python
4
star
20

cx16imageviewer

multi file format (iff, pcx, bmp, koala) image viewer for Commander X16
Lua
3
star
21

text-elite

python and cleand up ansi-c versions of text elite
C
2
star
22

ksim68k

m68k cpu simulator
Python
2
star
23

Elite-ships

3d model viewer for Elite's space ships
Python
2
star
24

cx16rockrunner

RockRunner - a Boulderdash(tm) clone for the Commander X16
Lua
1
star
25

mazes

some experiments with generating and solving mazes
Python
1
star
26

cx16kernel

custom CommanderX16 kernel rom
Assembly
1
star
27

cx16chess

Chess game for the Commander X16
Lua
1
star