Store factory for simplekv
A factory for simplekv-Store-based storage classes. Takes configuration values and returns a simplekv-Store.
This allows one to easily deploy a blob-based store in production, but test with a filesystem-based store in development. The following simplekv-Stores are supported in storefact:
- DictStore
- RedisStore
- FilesystemStore
- BotoStore (Amazon S3)
- AzureBlockBlobStorage
Storefact is released as open source under the 3-clause BSD license.
pip install storefact
There are two possibilities to use storefact.
- Use a dictionary with configuration data (e.g. loaded from an ini file)
from storefact import get_store
params = {
'account_name': 'test',
'account_key': 'XXXsome_azure_account_keyXXX',
'container': 'my-azure-container',
}
store = get_store('azure', **params)
store.put(u'key', b'value')
assert store.get(u'key') == b'value'
- Use an URL to specify the configuration
from storefact import get_store_from_url, get_store
store = get_store_from_url('azure://test:XXXsome_azure_account_keyXXX@my-azure-container')
store.put(u'key', b'value')
assert store.get(u'key') == b'value'
URL and store types:
- In memory:
memory://
andhmemory://
. - Redis:
redis://[[password@]host[:port]][/db]
andhredis://[[password@]host[:port]][/db]
- Filesystem:
fs://
andhfs://
- Amazon S3:
s3://access_key:secret_key@endpoint/bucket[?create_if_missing=true]
andhs3://access_key:secret_key@endpoint/bucket[?create_if_missing=true]
- Azure Blob Storage (
azure://
andhazure://
): - with storage account key:
azure://account_name:account_key@container[?create_if_missing=true][?max_connections=2]
- with SAS token:
azure://account_name:shared_access_signature@container?use_sas&create_if_missing=false[?max_connections=2&socket_timeout=(20,100)]
- with SAS and additional parameters:
azure://account_name:shared_access_signature@container?use_sas&create_if_missing=false[?max_connections=2&socket_timeout=(20,100)][?max_block_size=4*1024*1024&max_single_put_size=64*1024*1024][?default_endpoints_protocol=http&blob_endpoint=http://localhost:2121]
- with storage account key:
- Azure Blob Storage (
Storage URLs starting with a h
indicate extended allowed characters. This allows the usage of slashes and spaces in blob names.
URL options with []
are optional and the []
need to be removed.
The documentation can be found on readthedocs.
To run the all tests run:
tox