pub struct KrakenDataClientConfig {Show 15 fields
pub api_key: Option<String>,
pub api_secret: Option<String>,
pub product_type: KrakenProductType,
pub environment: KrakenEnvironment,
pub base_url: Option<String>,
pub ws_public_url: Option<String>,
pub ws_private_url: Option<String>,
pub ws_l3_url: Option<String>,
pub validate_l3_checksum: bool,
pub proxy_url: Option<String>,
pub timeout_secs: u64,
pub heartbeat_interval_secs: u64,
pub ws_idle_timeout_ms: u64,
pub max_requests_per_second: Option<u32>,
pub transport_backend: TransportBackend,
}Expand description
Configuration for the Kraken data client.
Fields§
§api_key: Option<String>§api_secret: Option<String>§product_type: KrakenProductType§environment: KrakenEnvironment§base_url: Option<String>§ws_public_url: Option<String>§ws_private_url: Option<String>§ws_l3_url: Option<String>Override for the L3 WebSocket URL. Defaults to wss://ws-l3.kraken.com/v2.
validate_l3_checksum: boolValidate Kraken’s CRC32 checksum on each L3 update.
proxy_url: Option<String>Optional proxy URL for HTTP and WebSocket transports.
timeout_secs: u64§heartbeat_interval_secs: u64§ws_idle_timeout_ms: u64Idle timeout (milliseconds) for the spot v2 WebSocket.
If no application data (any text or binary frame) is received within this window, the connection is treated as dead and the client reconnects and resubscribes. This recovers from a backend that acknowledges a subscription but never attaches the data fan-out: the socket stays open with no close frame or transport error, so nothing else detects it.
Kraken sends a heartbeat text frame once per second while at least one
subscription is active, so a live subscribed connection resets this timer
well within the window. Note the client’s keepalive ping is answered
with a pong text frame, which also resets the timer roughly every
heartbeat_interval_secs; the default below is therefore kept short
enough to rely on the 1/s heartbeats rather than the keepalive, which
assumes the connection carries at least one subscription. A connection
held open without any subscription should disable this (0) or raise it
above heartbeat_interval_secs.
0 disables the idle timeout.
max_requests_per_second: Option<u32>§transport_backend: TransportBackendImplementations§
Source§impl KrakenDataClientConfig
impl KrakenDataClientConfig
Sourcepub fn builder() -> KrakenDataClientConfigBuilder
pub fn builder() -> KrakenDataClientConfigBuilder
Create an instance of KrakenDataClientConfig using the builder syntax
Source§impl KrakenDataClientConfig
impl KrakenDataClientConfig
Sourcepub fn has_api_credentials(&self) -> bool
pub fn has_api_credentials(&self) -> bool
Returns true if both API key and secret are set.
Sourcepub fn http_base_url(&self) -> String
pub fn http_base_url(&self) -> String
Returns the HTTP base URL for the configured product type and environment.
Sourcepub fn ws_public_url(&self) -> String
pub fn ws_public_url(&self) -> String
Returns the public WebSocket URL for the configured product type and environment.
Sourcepub fn ws_private_url(&self) -> String
pub fn ws_private_url(&self) -> String
Returns the private WebSocket URL for the configured product type and environment.
Trait Implementations§
Source§impl ClientConfig for KrakenDataClientConfig
impl ClientConfig for KrakenDataClientConfig
Source§impl Clone for KrakenDataClientConfig
impl Clone for KrakenDataClientConfig
Source§fn clone(&self) -> KrakenDataClientConfig
fn clone(&self) -> KrakenDataClientConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for KrakenDataClientConfig
impl Debug for KrakenDataClientConfig
Source§impl Default for KrakenDataClientConfig
impl Default for KrakenDataClientConfig
impl DerefToPyAny for KrakenDataClientConfig
Source§impl<'de> Deserialize<'de> for KrakenDataClientConfigwhere
KrakenDataClientConfig: Default,
impl<'de> Deserialize<'de> for KrakenDataClientConfigwhere
KrakenDataClientConfig: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'a, 'py> FromPyObject<'a, 'py> for KrakenDataClientConfigwhere
Self: Clone,
impl<'a, 'py> FromPyObject<'a, 'py> for KrakenDataClientConfigwhere
Self: Clone,
Source§impl<'py> IntoPyObject<'py> for KrakenDataClientConfig
impl<'py> IntoPyObject<'py> for KrakenDataClientConfig
Source§type Target = KrakenDataClientConfig
type Target = KrakenDataClientConfig
Source§type Output = Bound<'py, <KrakenDataClientConfig as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <KrakenDataClientConfig as IntoPyObject<'py>>::Target>
Source§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<Self as IntoPyObject<'_>>::Output, <Self as IntoPyObject<'_>>::Error>
Source§impl PyClass for KrakenDataClientConfig
impl PyClass for KrakenDataClientConfig
Source§impl PyClassImpl for KrakenDataClientConfig
impl PyClassImpl for KrakenDataClientConfig
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§const IS_IMMUTABLE_TYPE: bool = false
const IS_IMMUTABLE_TYPE: bool = false
Source§const RAW_DOC: &'static CStr = /// Configuration for the Kraken data client.
const RAW_DOC: &'static CStr = /// Configuration for the Kraken data client.
Source§const DOC: &'static CStr
const DOC: &'static CStr
text_signature if a constructor is defined. Read moreSource§type Layout = <<KrakenDataClientConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<KrakenDataClientConfig>
type Layout = <<KrakenDataClientConfig as PyClassImpl>::BaseNativeType as PyClassBaseType>::Layout<KrakenDataClientConfig>
Source§type ThreadChecker = NoopThreadChecker
type ThreadChecker = NoopThreadChecker
type Inventory = Pyo3MethodsInventoryForKrakenDataClientConfig
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny by default, and when you declare
#[pyclass(extends=PyDict)], it’s PyDict.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
§fn dict_offset() -> Option<PyObjectOffset>
fn dict_offset() -> Option<PyObjectOffset>
§fn weaklist_offset() -> Option<PyObjectOffset>
fn weaklist_offset() -> Option<PyObjectOffset>
Source§impl PyClassNewTextSignature for KrakenDataClientConfig
impl PyClassNewTextSignature for KrakenDataClientConfig
const TEXT_SIGNATURE: &'static str = "(product_type=None, environment=None, api_key=None, api_secret=None, base_url=None, ws_public_url=None, ws_private_url=None, ws_l3_url=None, validate_l3_checksum=None, proxy_url=None, timeout_secs=None, heartbeat_interval_secs=None, ws_idle_timeout_ms=None, max_requests_per_second=None)"
Source§impl PyStubType for KrakenDataClientConfig
impl PyStubType for KrakenDataClientConfig
Source§fn type_output() -> TypeInfo
fn type_output() -> TypeInfo
§fn type_input() -> TypeInfo
fn type_input() -> TypeInfo
Source§impl PyTypeInfo for KrakenDataClientConfig
impl PyTypeInfo for KrakenDataClientConfig
Source§const NAME: &str = <Self as ::pyo3::PyClass>::NAME
const NAME: &str = <Self as ::pyo3::PyClass>::NAME
prefer using ::type_object(py).name() to get the correct runtime value
Source§const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
const MODULE: Option<&str> = <Self as ::pyo3::impl_::pyclass::PyClassImpl>::MODULE
prefer using ::type_object(py).module() to get the correct runtime value
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.Auto Trait Implementations§
impl Freeze for KrakenDataClientConfig
impl RefUnwindSafe for KrakenDataClientConfig
impl Send for KrakenDataClientConfig
impl Sync for KrakenDataClientConfig
impl Unpin for KrakenDataClientConfig
impl UnsafeUnpin for KrakenDataClientConfig
impl UnwindSafe for KrakenDataClientConfig
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<'py, T> FromPyObjectOwned<'py> for Twhere
T: for<'a> FromPyObject<'a, 'py>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read more§impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
impl<'py, T> IntoPyObjectNautilusExt<'py> for Twhere
T: IntoPyObjectExt<'py>,
§fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>
fn into_py_any_unwrap(self, py: Python<'py>) -> Py<PyAny>
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§fn type_check(object: &Bound<'_, PyAny>) -> bool
fn type_check(object: &Bound<'_, PyAny>) -> bool
§fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
fn classinfo_object(py: Python<'_>) -> Bound<'_, PyAny>
isinstance and issubclass function. Read more