lockserver-client


Namelockserver-client JSON
Version 0.1.3 PyPI version JSON
download
home_pagehttps://github.com/benliao/lockserver
SummaryPython client SDK for lockserver (distributed lock server)
upload_time2025-08-31 10:58:43
maintainerNone
docs_urlNone
authorBen Liao
requires_pythonNone
licenseMIT
keywords distributed lock server client sdk python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## 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:
    ```sh
    pip install --upgrade build twine
    ```
2. Build the package:
    ```sh
    python3 -m build
    ```
3. Upload to PyPI:
    ```sh
    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](https://github.com/benliao/lockserver), a distributed lock server for coordinating access to shared resources.

## Install

```
pip install requests
```

## Usage

```python
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

```python
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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/benliao/lockserver",
    "name": "lockserver-client",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "distributed lock server client sdk python",
    "author": "Ben Liao",
    "author_email": "abenliao@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/25/7f/1c5fd4ae70fa4fb4a89882c56dfd91968b0c8d216ae0611d591ecc675a15/lockserver_client-0.1.3.tar.gz",
    "platform": null,
    "description": "## Publishing to PyPI\n\nThis package is ready for PyPI. The `setup.py` uses your `README.md` as the long description, so your PyPI page will show this documentation.\n\nTo publish:\n\n1. Make sure you have `build` and `twine` installed:\n    ```sh\n    pip install --upgrade build twine\n    ```\n2. Build the package:\n    ```sh\n    python3 -m build\n    ```\n3. Upload to PyPI:\n    ```sh\n    python3 -m twine upload dist/*\n    ```\n4. Check your package at https://pypi.org/project/lockserver-client/\n\nIf you update the README, rebuild and re-upload to update the PyPI description.\n# lockserver-client (Python)\n\nA Python client SDK for [lockserver](https://github.com/benliao/lockserver), a distributed lock server for coordinating access to shared resources.\n\n## Install\n\n```\npip install requests\n```\n\n## Usage\n\n```python\nfrom lockserver_client import LockserverClient\n\nclient = LockserverClient(\n    addr='127.0.0.1:8080',  # or from env LOCKSERVER_ADDR\n    owner='worker1',        # or from env LOCKSERVER_OWNER\n    secret='your-strong-secret' # or from env LOCKSERVER_SECRET\n)\n\n# Blocking acquire\nclient.acquire('my-resource')\n# ... critical section ...\nclient.release('my-resource')\n\n# Non-blocking acquire\nif client.acquire('my-resource', blocking=False):\n    # ... critical section ...\n    client.release('my-resource')\n```\n\n## Example: Multiple workers writing to S3\n\n```python\nfrom lockserver_client import LockserverClient\n\ndef upload_to_s3(bucket, file):\n    print(f\"Uploading {file} to {bucket}...\")\n\nclient = LockserverClient(owner='worker-123', secret='your-strong-secret')\n\nif client.acquire('s3-upload-lock'):\n    try:\n        upload_to_s3('my-bucket', 'file.txt')\n    finally:\n        client.release('s3-upload-lock')\n```\n\n## API\n\n### `LockserverClient(addr=None, owner=None, secret=None)`\n- `addr`: lockserver address (default: `127.0.0.1:8080`)\n- `owner`: unique owner id (default: `default_owner`)\n- `secret`: shared secret (default: `changeme`)\n\n### `acquire(resource, blocking=True, expire=None)`\n- Acquires a lock on `resource`. If `blocking` is False, returns immediately if lock is held.\n- `expire` (optional): lock expiration in seconds. After this time, the lock is auto-released by the server.\n- Returns `True` (lock acquired) or `False` (non-blocking, lock not acquired).\n\n### `release(resource)`\n- Releases the lock on `resource`.\n\n## License\n\nMIT\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Python client SDK for lockserver (distributed lock server)",
    "version": "0.1.3",
    "project_urls": {
        "Homepage": "https://github.com/benliao/lockserver"
    },
    "split_keywords": [
        "distributed",
        "lock",
        "server",
        "client",
        "sdk",
        "python"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9974c6c4c6b1c132c158b63b170e70a497f135dbc2f4bd79e55115a6bad4ab1c",
                "md5": "84993aa7ad05f3ecbdc8b9377cb6fb5c",
                "sha256": "b949b18916d22491b32cb0643d2b82c1be6a78309e18e570ed78af6f0200636f"
            },
            "downloads": -1,
            "filename": "lockserver_client-0.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "84993aa7ad05f3ecbdc8b9377cb6fb5c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 2940,
            "upload_time": "2025-08-31T10:58:41",
            "upload_time_iso_8601": "2025-08-31T10:58:41.236763Z",
            "url": "https://files.pythonhosted.org/packages/99/74/c6c4c6b1c132c158b63b170e70a497f135dbc2f4bd79e55115a6bad4ab1c/lockserver_client-0.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "257f1c5fd4ae70fa4fb4a89882c56dfd91968b0c8d216ae0611d591ecc675a15",
                "md5": "5ac09bcfaf244f014ab0f52edab73373",
                "sha256": "fe3e991673f4a406cba7d79a259db2e0a87f3b18e4a47f83a9e73e3016fda4b3"
            },
            "downloads": -1,
            "filename": "lockserver_client-0.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "5ac09bcfaf244f014ab0f52edab73373",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 2761,
            "upload_time": "2025-08-31T10:58:43",
            "upload_time_iso_8601": "2025-08-31T10:58:43.402636Z",
            "url": "https://files.pythonhosted.org/packages/25/7f/1c5fd4ae70fa4fb4a89882c56dfd91968b0c8d216ae0611d591ecc675a15/lockserver_client-0.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-31 10:58:43",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "benliao",
    "github_project": "lockserver",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "lockserver-client"
}
        
Elapsed time: 2.69286s