Skip to main content

A high-performance Python object sharing pool with distributed capabilities

Project description

Memory Object Server

A high-performance Python object sharing pool with distributed capabilities.

Features

  • Support for any Python object: Including system-level objects like sockets
  • Asynchronous communication: Built on asyncio for high performance
  • Minimal API: Simple and intuitive interface
  • Distributed support: Multi-node synchronization and discovery
  • Auto-reconnection: Reliable TCP socket communication with automatic reconnection
  • Thread-safe: Concurrent operations are fully supported
  • Port detection: Smart startup with port availability checking

Installation

pip install memory-obj-server

Quick Start

Server

from memory_obj_pool import Server

server = Server(host='0.0.0.0', port=8765)
server.run()

Client

from memory_obj_pool import SyncClient

client = SyncClient(host='localhost', port=8765)

client.put('key', {'data': 'value'})
result = client.get('key')
print(result)  # {'data': 'value'}

Async Client

import asyncio
from memory_obj_pool import Client

async def main():
    client = Client(host='localhost', port=8765)
    await client.put('key', {'data': 'value'})
    result = await client.get('key')
    print(result)

asyncio.run(main())

API Reference

Server

  • Server(host='0.0.0.0', port=8765, max_size=10000): Create a server instance
  • server.run(): Start the server (blocking)
  • await server.start(): Start the server (async)
  • await server.stop(): Stop the server

Client

  • Client(host='localhost', port=8765, auto_reconnect=True): Create async client
  • await client.connect(): Connect to server
  • await client.put(key, obj): Store an object
  • await client.get(key): Retrieve an object
  • await client.remove(key): Remove an object
  • await client.clear(): Clear all objects
  • await client.size(): Get pool size
  • await client.contains(key): Check if key exists

SyncClient

  • SyncClient(host='localhost', port=8765, auto_reconnect=True): Create sync client
  • client.put(key, obj): Store an object
  • client.get(key): Retrieve an object
  • client.remove(key): Remove an object
  • client.clear(): Clear all objects
  • client.size(): Get pool size
  • client.contains(key): Check if key exists

Distributed Usage

from memory_obj_pool import DistributedPool

pool = DistributedPool(
    node_id='node1',
    known_nodes=[('localhost', 8765)]
)
pool.start()

Requirements

  • Python 3.7+
  • dill
  • asyncio

License

Apache License 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

memory_obj_server-0.2.0.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

memory_obj_server-0.2.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file memory_obj_server-0.2.0.tar.gz.

File metadata

  • Download URL: memory_obj_server-0.2.0.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for memory_obj_server-0.2.0.tar.gz
Algorithm Hash digest
SHA256 20b5e735fe7b4d0de9668b458e3c1c896678f160e6b592136d9622c21fa2d03b
MD5 6d5feea546ab3f3eff03e7d5d878857b
BLAKE2b-256 ef58ded9cf3a7d0a72ab10632214e6259574565d27648da2b86a9e4516883fb5

See more details on using hashes here.

File details

Details for the file memory_obj_server-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for memory_obj_server-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 59b3309474d9af82dcf57db89ecaeab19160fd7ab8c30fab01826fffd74e9f95
MD5 2befe55d42899a60cc3b6d9aae1fbae1
BLAKE2b-256 2d8f2ddc48011c24e0bba94bf41e37bea1a8abb044fe766c4e42e3d065fdfc76

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page