Client SDK for Objectstore, the Sentry object storage platform
Project description
Objectstore Client
The client is used to interface with the objectstore backend. It handles responsibilities like transparent compression, and making sure that uploads and downloads are done as efficiently as possible.
Usage
import datetime
import urllib3
from objectstore_client import (
Client,
NoOpMetricsBackend,
TimeToIdle,
TimeToLive,
Usecase,
)
# This should be stored in a global variable and reused, in order to reuse the connection
client = Client(
"http://localhost:8888",
# Optionally, bring your own metrics backend to record things like latency, throughput, and payload sizes
metrics_backend=NoOpMetricsBackend(),
# Optionally, enable distributed traces in Sentry
propagate_traces=True,
# Optionally, set timeout and retries
timeout_ms=500, # 500ms timeout for requests
retries=3, # Number of connection retries
# For further customization, provide additional kwargs for urllib3.HTTPConnectionPool
connection_kwargs={"maxsize": 10},
)
# This could also be stored in a global/shared variable, as you will deal with a fixed number of usecases with statically defined defaults
my_usecase = Usecase(
"my-usecase",
# Optionally, define defaults for all operations within this Usecase
expiration_policy=TimeToLive(datetime.timedelta(days=1)),
)
# Start a Session, tied to your Usecase and a Scope.
# A Scope is a (possibly nested) namespace within Objectstore that provides isolation within a Usecase.
# The Scope is given as a sequence of key-value pairs through kwargs.
# Note that order matters!
# The admitted characters for keys and values are: `A-Za-z0-9_-()$!+*'`.
# You're encouraged to use the organization and project ID as the first components of the scope, as follows:
session = client.session(
my_usecase, org=42, project=1337, app_slug="email_app"
)
# The following operations will raise an exception on failure
# Write an object and metadata
object_key = session.put(
b"Hello, world!",
# You can pass in your own identifier for the object to decide where to store the file.
# Otherwise, Objectstore will pick an identifier and return it.
# A put request to an existing identifier overwrites the contents and metadata.
# id="hello",
metadata={"key": "value"},
# Overrides the default defined at the Usecase level
expiration_policy=TimeToIdle(datetime.timedelta(days=30)),
)
# Read an object and its metadata
result = session.get(object_key)
content = result.payload.read()
assert content == b"Hello, world!"
assert result.metadata.custom["key"] == "value"
# Delete an object
session.delete(object_key)
Development
Environment Setup
The considerations for setting up the development environment that can be found in the main README apply for this package as well.
Pre-commit hook
A configuration to set up a git pre-commit hook using pre-commit is available at the root of the repository.
To install it, run
pre-commit install
The hook will automatically run some checks before every commit, including the linters and formatters we run in CI.
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file objectstore_client-0.0.11.tar.gz.
File metadata
- Download URL: objectstore_client-0.0.11.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9355e4de115de537aa058c19bed169168b1360f22e155d9b15d6eb1a4935f5e
|
|
| MD5 |
b93160ea08cace3d3987637e30287a21
|
|
| BLAKE2b-256 |
30a0b4d3d1bd2effc0dce4894f8ad284e8416dff5f026320e590542c57db452d
|
File details
Details for the file objectstore_client-0.0.11-py3-none-any.whl.
File metadata
- Download URL: objectstore_client-0.0.11-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed435c7a0297a5b75bfc6a6a90257d1c54e7e2a10ff6b03085faacf604c1eb8b
|
|
| MD5 |
493651d64fcf7cdca778fed2b92bba24
|
|
| BLAKE2b-256 |
2473a0f6600d6ff639d49d25a08ec1ef73f1da4018f877f83cf22282d1e01141
|