Revision 74cbb94a

b/snf-pithos-app/pithos/api/settings.py
73 73
BACKEND_VERSIONING = getattr(settings, 'PITHOS_BACKEND_VERSIONING', 'auto')
74 74
BACKEND_FREE_VERSIONING = getattr(settings, 'PITHOS_BACKEND_FREE_VERSIONING', True)
75 75

  
76
# Enable backend pooling
77
BACKEND_POOL_ENABLED = getattr(settings, 'PITHOS_BACKEND_POOL_ENABLED', True)
78

  
76 79
# Default backend pool size
77 80
BACKEND_POOL_SIZE = getattr(settings, 'PITHOS_BACKEND_POOL_SIZE', 5)
78 81

  
b/snf-pithos-app/pithos/api/util.py
58 58
                                 ASTAKOS_BASE_URL,
59 59
                                 BACKEND_ACCOUNT_QUOTA, BACKEND_CONTAINER_QUOTA,
60 60
                                 BACKEND_VERSIONING,
61
                                 BACKEND_FREE_VERSIONING, BACKEND_POOL_SIZE,
61
                                 BACKEND_FREE_VERSIONING,
62
                                 BACKEND_POOL_ENABLED, BACKEND_POOL_SIZE,
62 63
                                 BACKEND_BLOCK_SIZE, BACKEND_HASH_ALGORITHM,
63 64
                                 RADOS_STORAGE, RADOS_POOL_BLOCKS,
64 65
                                 RADOS_POOL_MAPS, TRANSLATE_UUIDS,
65 66
                                 PUBLIC_URL_SECURITY, PUBLIC_URL_ALPHABET,
66 67
                                 COOKIE_NAME, BASE_HOST, UPDATE_MD5)
67 68
from pithos.api.resources import resources
69
from pithos.backends import connect_backend
68 70
from pithos.backends.base import (NotAllowedError, QuotaError, ItemNotExists,
69 71
                                  VersionNotExists)
70 72

  
......
991 993
    BLOCK_PARAMS = {'mappool': None,
992 994
                    'blockpool': None, }
993 995

  
994

  
995
_pithos_backend_pool = PithosBackendPool(
996
        size=BACKEND_POOL_SIZE,
997
        db_module=BACKEND_DB_MODULE,
998
        db_connection=BACKEND_DB_CONNECTION,
999
        block_module=BACKEND_BLOCK_MODULE,
1000
        block_path=BACKEND_BLOCK_PATH,
1001
        block_umask=BACKEND_BLOCK_UMASK,
1002
        block_size=BACKEND_BLOCK_SIZE,
1003
        hash_algorithm=BACKEND_HASH_ALGORITHM,
1004
        queue_module=BACKEND_QUEUE_MODULE,
1005
        queue_hosts=BACKEND_QUEUE_HOSTS,
1006
        queue_exchange=BACKEND_QUEUE_EXCHANGE,
1007
        astakos_url=ASTAKOS_BASE_URL,
1008
        service_token=SERVICE_TOKEN,
1009
        astakosclient_poolsize=ASTAKOSCLIENT_POOLSIZE,
1010
        free_versioning=BACKEND_FREE_VERSIONING,
1011
        block_params=BLOCK_PARAMS,
1012
        public_url_security=PUBLIC_URL_SECURITY,
1013
        public_url_alphabet=PUBLIC_URL_ALPHABET,
1014
        account_quota_policy=BACKEND_ACCOUNT_QUOTA,
1015
        container_quota_policy=BACKEND_CONTAINER_QUOTA,
1016
        container_versioning_policy=BACKEND_VERSIONING)
996
BACKEND_KWARGS = dict(
997
    db_module=BACKEND_DB_MODULE,
998
    db_connection=BACKEND_DB_CONNECTION,
999
    block_module=BACKEND_BLOCK_MODULE,
1000
    block_path=BACKEND_BLOCK_PATH,
1001
    block_umask=BACKEND_BLOCK_UMASK,
1002
    block_size=BACKEND_BLOCK_SIZE,
1003
    hash_algorithm=BACKEND_HASH_ALGORITHM,
1004
    queue_module=BACKEND_QUEUE_MODULE,
1005
    queue_hosts=BACKEND_QUEUE_HOSTS,
1006
    queue_exchange=BACKEND_QUEUE_EXCHANGE,
1007
    astakos_url=ASTAKOS_BASE_URL,
1008
    service_token=SERVICE_TOKEN,
1009
    astakosclient_poolsize=ASTAKOSCLIENT_POOLSIZE,
1010
    free_versioning=BACKEND_FREE_VERSIONING,
1011
    block_params=BLOCK_PARAMS,
1012
    public_url_security=PUBLIC_URL_SECURITY,
1013
    public_url_alphabet=PUBLIC_URL_ALPHABET,
1014
    account_quota_policy=BACKEND_ACCOUNT_QUOTA,
1015
    container_quota_policy=BACKEND_CONTAINER_QUOTA,
1016
    container_versioning_policy=BACKEND_VERSIONING)
1017

  
1018
_pithos_backend_pool = PithosBackendPool(size=BACKEND_POOL_SIZE,
1019
                                         **BACKEND_KWARGS)
1017 1020

  
1018 1021

  
1019 1022
def get_backend():
1020
    backend = _pithos_backend_pool.pool_get()
1023
    if BACKEND_POOL_ENABLED:
1024
        backend = _pithos_backend_pool.pool_get()
1025
    else:
1026
        backend = connect_backend(**BACKEND_KWARGS)
1027
    backend.serials = []
1021 1028
    backend.messages = []
1022 1029
    return backend
1023 1030

  

Also available in: Unified diff