Skip to main content

Advanced data flow management for distributed Python applications

Reason this release was yanked:

Uploaded with incorrect version tag

Project description

ProxyStore

PyPI - Version PyPI - Python Version GitHub License DOI

docs tests pre-commit.ci status

ProxyStore facilitates efficient data flow management in distributed Python applications, such as dynamic task-based workflows or serverless and edge applications.

The transparent object proxy, the core building block within ProxyStore, acts like a wide-area reference that can be cheaply communicated. Unlike traditional references that are only valid within the virtual address space of a single process, the proxy references an object in remote storage and can be implicitly dereferenced in arbitrary processes—even on remote machines. The proxy is transparent in that it implicitly dereferences its target object when used—referred to a just-in-time resolution—and afterwards forwards all operations on itself to the cached target object.

This paradigm results in the best of both pass-by-reference and pass-by-value semantics, improves performance and portability by reducing transfer overheads through intermediaries, and abstracts low-level communication methods which reduces code complexity. A proxy contains within itself all the information and logic necessary to resolve the target object. This self-contained nature means a proxy consumer need not be aware of the low-level communication mechanisms used by the proxy; rather, this is unilaterally determined by the producer of the proxy.

ProxyStore supports a diverse set of programming patterns built on the proxy paradigm:

ProxyStore can leverage many popular mediated data transfer and storage systems: DAOS, Globus Transfer, Kafka, KeyDB, and Redis. Custom communication methods built on Mochi, UCX, WebRTC, and ZeroMQ are provided for high-performance and peer-to-peer applications.

Read more about ProxyStore's concepts here. Complete documentation for ProxyStore is available at docs.proxystore.dev.

Installation

The base ProxyStore package can be installed with pip.

pip install proxystore

Leveraging third-party libraries may require dependencies not installed by default but can be enabled via extras installation options (e.g., endpoints, kafka, or redis). All additional dependencies can be installed with:

pip install proxystore[all]

This will also install the proxystore-ex package which contains extensions and experimental features. The extensions package can also be installed with pip using proxystore[extensions] or proxystore-ex.

See the Installation guide for more information about the available extras installation options. See the Contributing guide to get started for local development.

Example

Creating proxies of objects only requires a few lines of code.

from proxystore.connectors.local import LocalConnector
from proxystore.proxy import Proxy
from proxystore.store import Store

def process(x: dict[str, str]) -> None:
    # x is transparently resolved from the store when first
    # used by the function. After which the proxy behaves as
    # target object (the dict) for the rest of its existence.
    assert isinstance(x, dict)
    assert x['hello'] == 'world'

with Store('example', connector=LocalConnector(), register=True) as store:
    # Store the object via a connector interface (here, a thread local
    # store). The returned proxy acts like a reference to the object.
    x = {'hello': 'world'}
    proxy = store.proxy(x)
    assert isinstance(proxy, Proxy)

    # Invoking a function with proxy works without function changes.
    process(proxy)

Check out the Get Started guide to learn more!

Citation

DOI

If you use ProxyStore or any of this code in your work, please cite our ProxyStore (SC '23) and Proxy Patterns (TPDS) papers.

@inproceedings{pauloski2023proxystore,
    title = {Accelerating {C}ommunications in {F}ederated {A}pplications with {T}ransparent {O}bject {P}roxies},
    author = {Pauloski, J. Gregory and Hayot-Sasson, Valerie and Ward, Logan and Hudson, Nathaniel and Sabino, Charlie and Baughman, Matt and Chard, Kyle and Foster, Ian},
    address = {New York, NY, USA},
    articleno = {59},
    booktitle = {Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis},
    doi = {10.1145/3581784.3607047},
    isbn = {9798400701092},
    location = {Denver, CO, USA},
    numpages = {15},
    publisher = {Association for Computing Machinery},
    series = {SC '23},
    url = {https://doi.org/10.1145/3581784.3607047},
    year = {2023}
}

@article{pauloski2024proxystore,
    title = {Object {P}roxy {P}atterns for {A}ccelerating {D}istributed {A}pplications},
    author = {Pauloski, J. Gregory and Hayot-Sasson, Valerie and Ward, Logan and Brace, Alexander and Bauer, André and Chard, Kyle and Foster, Ian},
    doi = {10.1109/TPDS.2024.3511347},
    journal = {IEEE Transactions on Parallel and Distributed Systems},
    number = {},
    pages = {1-13},
    volume = {},
    year = {2024}
}

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

proxystore-0.0.0.tar.gz (371.3 kB view details)

Uploaded Source

Built Distribution

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

proxystore-0.0.0-py3-none-any.whl (165.3 kB view details)

Uploaded Python 3

File details

Details for the file proxystore-0.0.0.tar.gz.

File metadata

  • Download URL: proxystore-0.0.0.tar.gz
  • Upload date:
  • Size: 371.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for proxystore-0.0.0.tar.gz
Algorithm Hash digest
SHA256 4698091cd6d1493d2ad4718a57efd4f3824be2e11138fa6e8fb9809dad98545e
MD5 08836c855d6276aa0508d93864e1932d
BLAKE2b-256 8f575b3a761e51adb2fa14703383a74476d0fa0321d6998a8f5a39edc6352b9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for proxystore-0.0.0.tar.gz:

Publisher: publish.yml on proxystore/proxystore

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file proxystore-0.0.0-py3-none-any.whl.

File metadata

  • Download URL: proxystore-0.0.0-py3-none-any.whl
  • Upload date:
  • Size: 165.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for proxystore-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b3aa8b4cb65f6869be8bd2707153f8ad2a6e093c7e88bffd9449e2cbb84ea7d4
MD5 981f1599fb4d3ecde226d2a7d91b1f28
BLAKE2b-256 1ca06c31e2cab5ee44e5c9558230b8aa2fbb10234b287c5dd4c1cb640046a320

See more details on using hashes here.

Provenance

The following attestation bundles were made for proxystore-0.0.0-py3-none-any.whl:

Publisher: publish.yml on proxystore/proxystore

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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