Skip to main content

fsspec implementation for OpenStack SWIFT

Project description

swiftspec

import fsspec

with fsspec.open("swift://server/account/container/object.txt", "r") as f:
    print(f.read())

Authentication

swiftspec uses the environment variables OS_STORAGE_URL and OS_AUTH_TOKEN for authentication if available. To create these variables, you can use the swift auth command from the python-swiftclient.

fault tolerance / automatic retry

Sometimes reading or writing from / to a swift storage might fail occasionally. If many objects are accessed, occasional failures can be extremely annoying and could be fixed relatively easily by retrying the request. Fortunately the aiohttp_retry package can help out in these situations. aiohttp_retry provides a wrapper around an aiohttp Client, which will automatically retry requests based on some user-provided rules. You can inject this client into the swiftspec filesystem using the get_client argument. First you'll have to define an async get_client function, which configures the RetryClient according to your preferences, e.g.:

async def get_client(**kwargs):
    import aiohttp
    import aiohttp_retry
    retry_options = aiohttp_retry.ExponentialRetry(
            attempts=3,
            exceptions={OSError, aiohttp.ServerDisconnectedError})
    retry_client = aiohttp_retry.RetryClient(raise_for_status=False, retry_options=retry_options)
    return retry_client

afterwards, you can use this function like:

with fsspec.open("swift://server/account/container/object.txt", "r", get_client=get_client) as f:
    print(f.read())

or:

import xarray as xr
ds = xr.Dataset(...)
ds.to_zarr("swift://server/account/container/object.zarr", storage_options={"get_client": get_client})

Develop

Code Formatting

swiftspec uses Black to ensure a consistent code format throughout the project. Run black . from the root of the swiftspec repository to auto-format your code. Additionally, many editors have plugins that will apply black as you edit files.

Optionally, you may wish to setup pre-commit hooks to automatically run black when you make a git commit. Run pre-commit install --install-hooks from the root of the swiftspec repository to setup pre-commit hooks. black will now be run before you commit, reformatting any changed files. You can format without committing via pre-commit run or skip these checks with git commit --no-verify.

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

swiftspec-0.0.4.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

swiftspec-0.0.4-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file swiftspec-0.0.4.tar.gz.

File metadata

  • Download URL: swiftspec-0.0.4.tar.gz
  • Upload date:
  • Size: 27.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for swiftspec-0.0.4.tar.gz
Algorithm Hash digest
SHA256 b7ab0b9b2c5d754b45850e7d75a47bea36451c135adc6411b6dd4c2686a95349
MD5 e5f7f2752e9744d3747190d992e32c1f
BLAKE2b-256 109a9f1a705fa60744fbe22cfadd4817c3d391d746fcaddcb6ed279a78a4cd82

See more details on using hashes here.

File details

Details for the file swiftspec-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: swiftspec-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for swiftspec-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6c89888fd1068a13d667863102ce9eab5b5c7e06391f557bc6cd7c8be3d2b6b1
MD5 aa14d2dc17c0ce23acb76a9d5e7e19b0
BLAKE2b-256 4ce27c432ca5bd7dc0035ee922e94645ca3a5593e1909842556b6a4c8454bcc4

See more details on using hashes here.

Supported by

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