concrete.util.access module¶
-
class
concrete.util.access.
CommunicationContainerFetchHandler
(communication_container)¶ Bases:
object
FetchCommunicationService implementation using Communication containers
Implements the
FetchCommunicationService
interface, retrieving Communications from a dict-like communication_container object that maps Communication ID strings to Communications. The communication_container could be an actual dict, or a container such as:DirectoryBackedCommunicationContainer
FetchBackedCommunicationContainer
MemoryBackedCommunicationContainer
RedisHashBackedCommunicationContainer
ZipFileBackedCommunicationContainer
S3BackedCommunicationContainer
Usage:
from concrete.util.access_wrapper import FetchCommunicationServiceWrapper handler = CommunicationContainerFetchHandler(comm_container) fetch_service = FetchCommunicationServiceWrapper(handler) fetch_service.serve(host, port)
Parameters: communication_container – Dict-like object that maps Communication IDs to Communications -
about
()¶
-
alive
()¶
-
fetch
(fetch_request)¶
-
getCommunicationCount
()¶
-
getCommunicationIDs
(offset, count)¶
-
class
concrete.util.access.
DirectoryBackedStoreHandler
(store_path)¶ Bases:
object
Simple StoreCommunicationService implementation using a directory
Implements the
StoreCommunicationService
interface, storing Communications in a directory.Parameters: store_path – Path where Communications should be Stored -
about
()¶
-
alive
()¶
-
store
(communication)¶ Save Communication to a directory
Stored Communication files will be named [COMMUNICATION_ID].comm. If a file with that name already exists, it will be overwritten.
-
-
class
concrete.util.access.
RedisHashBackedStoreHandler
(redis_db, key)¶ Bases:
object
Simple StoreCommunicationService implementation using a Redis hash.
Implements the
StoreCommunicationService
interface, storing Communications in a Redis hash, indexed by id.Parameters: - redis_db (redis.Redis) – Redis database connection object
- key (str) – key of hash in redis database
-
about
()¶
-
alive
()¶
-
store
(communication)¶ Save Communication to a Redis hash, using the Communication id as a key.
Parameters: communication (Communication) – communication to store
-
class
concrete.util.access.
RelayFetchHandler
(host, port)¶ Bases:
object
Implements a ‘relay’ to another
FetchCommunicationService
server.A
FetchCommunicationService
that acts as a relay to a secondFetchCommunicationService
, where the second service is using the TSocket transport and TCompactProtocol protocol.This class was designed for the use case where you have Thrift JavaScript code that needs to communicate with a
FetchCommunicationService
server, but the server does not support the same Thrift serialization protocol as the JavaScript client.The de-facto standard for Concrete services is to use the TCompactProtocol serialization protocol over a TSocket connection. But as of Thrift 0.10.0, the Thrift JavaScript libraries only support using TJSONProtocol over HTTP.
The RelayFetchHandler class is intended to be used as server-side code by a web application. The JavaScript code will make
FetchCommunicationService
RPC calls to the web server using HTTP/TJSONProtocol, and the web application will then pass these RPC calls to anotherFetchCommunicationService
using TSocket/TCompactProtocol RPC calls.Parameters: - host (str) – Hostname of
FetchCommunicationService
server - port (int) – Port # of
FetchCommunicationService
server
-
about
()¶
-
alive
()¶
-
fetch
(request)¶
-
getCommunicationCount
()¶
-
getCommunicationIDs
(offset, count)¶
- host (str) – Hostname of
-
class
concrete.util.access.
S3BackedStoreHandler
(bucket, prefix_len=4)¶ Bases:
object
Simple StoreCommunicationService implementation using an AWS S3 bucket.
Implements the
StoreCommunicationService
interface, storing Communications in an S3 bucket, indexed by id, optionally prefixed with a fixed-length, random-looking but deterministic hash to improve performance.References
http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html
Parameters: - bucket (boto.s3.bucket.Bucket) – S3 bucket object
- prefix_len (int) – length of prefix to add to a Communication id to form its key. A prefix of length four enables S3 to better partition the bucket contents, yielding higher performance and a lower chance of getting rate-limited by AWS.
-
about
()¶ Return S3BackedStoreHandler service information.
Returns: An object of type ServiceInfo
-
alive
()¶ Return whether service is alive and running.
Returns: True or False
-
store
(communication)¶ Save Communication to an S3 bucket, using the Communication id with a hash prefix of length self.prefix_len as a key.
Parameters: communication (Communication) – communication to store
-
concrete.util.access.
prefix_s3_key
(key_str, prefix_len)¶ Given unprefixed S3 key key_str, prefix the key with a deterministic prefix of hex characters of length prefix_len and return the result. Keys with such prefixes enable better performance on S3 and reduce the likelihood of rate-limiting.
Parameters: - key_str (str) – original (unprefixed) key, as a string
- prefix_len (int) – length of prefix to add to key
Returns: prefixed key
References
http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html
-
concrete.util.access.
unprefix_s3_key
(prefixed_key_str, prefix_len)¶ Given prefixed S3 key key_str, remove prefix of length prefix_len from the key and return the result. Keys with random-looking prefixes enable better performance on S3 and reduce the likelihood of rate-limiting.
Parameters: - preixed_key_str (str) – prefixed key, as a string
- prefix_len (int) – length of prefix to remove from key
Returns: unprefixed key
References
http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html