Metadata-Version: 2.1
Name: Minimal-Server
Version: 1.0.1
Summary: Serve a python object through a simple socket; supports multiple connections.
Home-page: https://github.com/soldni/MinimalServer
Author: Luca Soldaini
Author-email: luca@soldaini.net
License: MIT License
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: System :: Networking
Description-Content-Type: text/markdown
License-File: LICENSE

[Now available on pip!](https://pypi.org/project/Minimal-Server/1.0/)
Just run

```bash
pip install Minimal-Server

```

# Minimal Server

This library serves a very simple purpose: have a simple client/server pair to "serve" a Python (2 & 3) object.

Have you ever had to deal with a python object that takes *forever* to initiate? Maybe you need it to call it once in another script, but you can't bear the time it takes to initialize it.
This module comes handy in these situations. It works as follows:

Server script:

```python

from minimal_server import minimal_server

obj = SlowInitObject(...)   # An instance of the object
minimal_server(obj, host='localhost', port=4444)
```

Client script:

```python
from minimal_server import MinimalClient
client = MinimalClient(SlowInitObject,      # Pass the class, not the instance!
                       host='localhost',
                       port=4444)

client.foo(...)        # Call any public method of SlowInitObject
```

Easy, right?

## Throughput

In my tests, it seems that the communication via sockets takes around 1 ms on localhost. So if the object you're trying to interface is substantially faster than that, it will impact its throughput significantly.

## A note about Python 2 / 3 interoperability

This module is a great way to use Python 2 modules in a Python 3 codebase. Just make sure to set `pickle_protocol=2` in both the client and the server.


