Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

Publishing to PyPI

This package is ready for PyPI. The setup.py uses your README.md as the long description, so your PyPI page will show this documentation.

To publish:

  1. Make sure you have build and twine installed:
    pip install --upgrade build twine
  2. Build the package:
    python3 -m build
  3. Upload to PyPI:
    python3 -m twine upload dist/*
  4. Check your package at https://pypi.org/project/lockserver-client/

If you update the README, rebuild and re-upload to update the PyPI description.

lockserver-client (Python)

A Python client SDK for lockserver, a distributed lock server for coordinating access to shared resources.

Install

pip install requests

Usage

from lockserver_client import LockserverClient

client = LockserverClient(
    addr='127.0.0.1:8080',  # or from env LOCKSERVER_ADDR
    owner='worker1',        # or from env LOCKSERVER_OWNER
    secret='your-strong-secret' # or from env LOCKSERVER_SECRET
)

# Blocking acquire
client.acquire('my-resource')
# ... critical section ...
client.release('my-resource')

# Non-blocking acquire
if client.acquire('my-resource', blocking=False):
    # ... critical section ...
    client.release('my-resource')

Example: Multiple workers writing to S3

from lockserver_client import LockserverClient

def upload_to_s3(bucket, file):
    print(f"Uploading {file} to {bucket}...")

client = LockserverClient(owner='worker-123', secret='your-strong-secret')

if client.acquire('s3-upload-lock'):
    try:
        upload_to_s3('my-bucket', 'file.txt')
    finally:
        client.release('s3-upload-lock')

API

LockserverClient(addr=None, owner=None, secret=None)

  • addr: lockserver address (default: 127.0.0.1:8080)
  • owner: unique owner id (default: default_owner)
  • secret: shared secret (default: changeme)

acquire(resource, blocking=True, expire=None)

  • Acquires a lock on resource. If blocking is False, returns immediately if lock is held.
  • expire (optional): lock expiration in seconds. After this time, the lock is auto-released by the server.
  • Returns True (lock acquired) or False (non-blocking, lock not acquired).

release(resource)

  • Releases the lock on resource.

License

MIT