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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7ab0b9b2c5d754b45850e7d75a47bea36451c135adc6411b6dd4c2686a95349 |
|
MD5 | e5f7f2752e9744d3747190d992e32c1f |
|
BLAKE2b-256 | 109a9f1a705fa60744fbe22cfadd4817c3d391d746fcaddcb6ed279a78a4cd82 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c89888fd1068a13d667863102ce9eab5b5c7e06391f557bc6cd7c8be3d2b6b1 |
|
MD5 | aa14d2dc17c0ce23acb76a9d5e7e19b0 |
|
BLAKE2b-256 | 4ce27c432ca5bd7dc0035ee922e94645ca3a5593e1909842556b6a4c8454bcc4 |