cassandra.protocol
- Protocol Features¶ Custom Payloads¶
Native protocol version 4+ allows for a custom payload to be sent between clients and custom query handlers. The payload is specified as a string:binary_type dict holding custom key/value pairs.
By default these are ignored by the server. They can be useful for servers implementing a custom QueryHandler.
See Session.execute()
, :Session.execute_async()
, ResponseFuture.custom_payload
.
cassandra.protocol.
_ProtocolHandler
[source]¶
_ProtocolHander handles encoding and decoding messages.
This class can be specialized to compose Handlers which implement alternative result decoding or type deserialization. Class definitions are passed to cassandra.cluster.Cluster
on initialization.
Contracted class methods are _ProtocolHandler.encode_message()
and _ProtocolHandler.decode_message()
.
message_types_by_opcode
= {default mapping}¶
Default mapping of opcode to Message implementation. The default decode_message
implementation uses this to instantiate a message and populate using recv_body
. This mapping can be updated to inject specialized result decoding implementations.
encode_message
(msg, stream_id, protocol_version, compressor, allow_beta_protocol_version)[source]¶
Encodes a message using the specified frame parameters, and compressor
Parameters:decode_message
(protocol_version, user_type_map, stream_id, flags, opcode, body, decompressor, result_metadata)[source]¶
Decodes a native protocol message body
Parameters:a message decoded from the body and frame attributes
When python-driver is compiled with Cython, it uses a Cython-based deserialization path to deserialize messages. By default, the driver will use a Cython-based parser that returns lists of rows similar to the pure-Python version. In addition, there are two additional ProtocolHandler classes that can be used to deserialize response messages: LazyProtocolHandler
and NumpyProtocolHandler
. They can be used as follows:
from cassandra.protocol import NumpyProtocolHandler, LazyProtocolHandler from cassandra.query import tuple_factory s.client_protocol_handler = LazyProtocolHandler # for a result iterator s.row_factory = tuple_factory #required for Numpy results s.client_protocol_handler = NumpyProtocolHandler # for a dict of NumPy arrays as result
These protocol handlers comprise different parsers, and return results as described below:
- ProtocolHandler: this default implementation is a drop-in replacement for the pure-Python version.
- The rows are all parsed upfront, before results are returned.
- LazyProtocolHandler: near drop-in replacement for the above, except that it returns an iterator over rows,
- lazily decoded into the default row format (this is more efficient since all decoded results are not materialized at once)
- NumpyProtocolHander: deserializes results directly into NumPy arrays. This facilitates efficient integration with
- analysis toolkits such as Pandas.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4