Skip to content

proxystore.store.globus

GlobusStore Implementation.

GlobusStore

GlobusStore(
    name: str,
    endpoints: GlobusEndpoints
    | list[GlobusEndpoint]
    | dict[str, dict[str, str]],
    polling_interval: int = 1,
    sync_level: int
    | Literal[
        "exists", "size", "mtime", "checksum"
    ] = "mtime",
    timeout: int = 60,
    *,
    serializer: SerializerT | None = None,
    deserializer: DeserializerT | None = None,
    cache_size: int = 16,
    metrics: bool = False
) -> None

Bases: Store[GlobusConnector]

Store wrapper for Globus transfers.

Warning

This wrapper exists for backwards compatibility with ProxyStore <=0.4.* and will be deprecated in version 0.6.0.

Parameters:

  • name (str) –

    Name of the store instance.

  • endpoints (GlobusEndpoints | list[GlobusEndpoint] | dict[str, dict[str, str]]) –

    Globus endpoints to keep in sync. If passed as a dict, the dictionary must match the format expected by GlobusEndpoints.from_dict().

  • polling_interval (int) –

    Interval in seconds to check if Globus tasks have finished.

  • sync_level (int | Literal['exists', 'size', 'mtime', 'checksum']) –

    Globus transfer sync level.

  • timeout (int) –

    Timeout in seconds for waiting on Globus tasks.

  • serializer (SerializerT | None) –

    Optional callable which serializes the object. If None, the default serializer (serialize()) will be used.

  • deserializer (DeserializerT | None) –

    Optional callable used by the factory to deserialize the byte string. If None, the default deserializer (deserialize()) will be used.

  • cache_size (int) –

    Size of LRU cache (in # of objects). If 0, the cache is disabled. The cache is local to the Python process.

  • metrics (bool) –

    Enable recording operation metrics.

Source code in proxystore/store/globus.py
def __init__(
    self,
    name: str,
    endpoints: GlobusEndpoints
    | list[GlobusEndpoint]
    | dict[str, dict[str, str]],
    polling_interval: int = 1,
    sync_level: int
    | Literal['exists', 'size', 'mtime', 'checksum'] = 'mtime',
    timeout: int = 60,
    *,
    serializer: SerializerT | None = None,
    deserializer: DeserializerT | None = None,
    cache_size: int = 16,
    metrics: bool = False,
) -> None:
    warnings.warn(
        'The GlobusStore will be deprecated in v0.6.0. Initializing a '
        'Store with a Connector is preferred. See '
        'https://github.com/proxystore/proxystore/issues/214 for details.',
        DeprecationWarning,
        stacklevel=2,
    )
    connector = GlobusConnector(
        endpoints=endpoints,
        polling_interval=polling_interval,
        sync_level=sync_level,
        timeout=timeout,
    )
    super().__init__(
        name,
        connector,
        serializer=serializer,
        deserializer=deserializer,
        cache_size=cache_size,
        metrics=metrics,
    )