56 lines
2.3 KiB
ReStructuredText
56 lines
2.3 KiB
ReStructuredText
``cassandra.protocol`` - Protocol Features
|
|
=====================================================================
|
|
|
|
.. module:: cassandra.protocol
|
|
|
|
.. _custom_payload:
|
|
|
|
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 :meth:`.Session.execute`, ::meth:`.Session.execute_async`, :attr:`.ResponseFuture.custom_payload`.
|
|
|
|
.. autoclass:: _ProtocolHandler
|
|
|
|
.. autoattribute:: message_types_by_opcode
|
|
:annotation: = {default mapping}
|
|
|
|
.. automethod:: encode_message
|
|
|
|
.. automethod:: decode_message
|
|
|
|
.. _faster_deser:
|
|
|
|
Faster Deserialization
|
|
----------------------
|
|
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:
|
|
|
|
.. code:: python
|
|
|
|
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.
|