2个版本
0.1.1 | 2023年11月17日 |
---|---|
0.1.0 | 2023年10月31日 |
#94 in 金融
36KB
792 行
kiteticker-async
是Kite Connect WebSocket API的异步客户端。
概述
官方的kiteconnect-rs与Python或Go实现相比,是一个不再维护的项目。根据这个问题,它将不会从Zerodha技术团队获得任何进一步的更新。
尽管Kite Connect REST API功能完善,但Ticker API存在滞后。以下是Rust实现的Ticker API的一些问题:- 它缺少一些在积极维护的Python & Go实现中存在的更新。 - 它不解析和序列化报价结构到正确的Rust结构体,而将其保留为未类型化的JSON值。这与在像Go或Java这样的类型化语言库中实现的相同方法不同。 - 设计要求应用程序通过回调处理流式WebSocket消息。这不是Rust库设计的惯例,尤其是在下游应用程序依赖于使用tokio等框架的现代Rust异步并发原语时。
这个crate试图解决上述问题。主要目标是实现一个符合Rust异步库设计原则的异步友好设计,这些原则由tokio倡导。
用法
在Cargo.toml中将kiteticker-async crate作为依赖项添加
[dependencies]
kiteticker-async = "0.1.1"
示例
#[tokio::main]
pub async fn main() -> Result<(), String> {
let api_key = std::env::var("KITE_API_KEY").unwrap();
let access_token = std::env::var("KITE_ACCESS_TOKEN").unwrap();
let ticker = KiteTickerAsync::connect(&api_key, &access_token).await?;
let token = 408065;
// subscribe to an instrument
let mut subscriber = ticker
.subscribe(&[token], Some(Mode::Full))
.await?;
// await quotes
if let Ok(Some(msg)) = subscriber.next_message().await? {
match msg {
TickerMessage::Tick(ticks) => {
let tick = ticks.first().unwrap();
println!("Received tick for instrument_token {}, {}", tick.instrument_token, tick);
}
}
}
Ok(())
}
贡献
使用just运行开发任务。
$ just --list
Available recipes:
build
check
doc
doc-open
doc-test api_key='' access_token=''
example api_key access_token
test api_key='' access_token=''
许可证
此项目受Apache 2.0许可证的许可。
依赖关系
~6–17MB
~253K SLoC