4个版本
0.1.3 | 2024年4月25日 |
---|---|
0.1.2 | 2024年3月21日 |
0.1.1 | 2024年1月30日 |
0.1.0 | 2024年1月30日 |
331在异步中排名
每月1,073次下载
21KB
292 行
tros
- 您的tros到tokio(...以及其他)
简介
Tros
是一个离线tarantool执行器。它是您从TX线程到普通外部线程(即,到tokio
运行时)的桥梁。为了快速了解它提供了什么,让我们用它来做一个异步HTTP请求
let text = TokioExecutor::new(PicodataTransport::default())
.exec(async { reqwest::get("http://example.com").await?.text().await })
.unwrap()
.unwrap();
assert!(text.contains("Example Domain"))
内部它将经过以下步骤
- 如果尚不存在,则创建
tokio
运行时; - 在运行时上启动未来执行;
- 通过底层通道接收未来的结果。结果等待方案取决于使用的传输方式。
开始使用
-
要开始使用,首先了解您正在使用哪个tarantool版本。您可以通过
tarantool --version
来执行此操作。-
如果某处提到
picodata
,则您正在使用我们的分支,这意味着我们可以为您提供一些优化,恭喜!🥳 -
如果没有提到
picodata
,则您正在使用原始tarantool。
-
-
然后查看下表以选择所需的功能和项目
TT版本 Cargo功能 它启用了什么 picodata分支 picodata
PicodataTransport
原始tarantool vanilla
VanillaTransport
-
通过将所需功能添加到
Cargo.toml
中安装tros
,例如:tros = { version = "0.1.0", features = [ "picodata" ] }
-
在您的代码中使用启用传输,例如
- 对于picodata:
TokioExecutor::new(PicodataTransport::default()).exec(...)
; - 对于vanilla:
TokioExecutor::new(VanillaTransport::default()).exec(...)
;
- 对于picodata:
详细信息
传输
通常您不应自行选择传输。只需选择上述描述的合适功能,您就可以使用自动选择的传输。
如果您确实对底层传输细节感兴趣,请查看传输比较表
类型 | 描述 | 优点 | 缺点 |
---|---|---|---|
CBusTransport |
它使用CBus 单次通道接收作业结果。 |
因为它使用CBus 通道,所以非常高效:它只是将当前纤程挂起,因此不会浪费额外资源。 |
截至撰写本文时,它仅可在picodata分支中使用。目前正在进行将CBus 补丁推送到上游的努力。 |
PollTransport |
它使用可配置的间隔轮询底层通道以接收作业结果。 | 它在所有现代tarantool版本中可用。 | 因为它以某个间隔轮询通道,所以效率不高。 |
示例
示例位于example
存储库中。为了简化它们的执行,每个示例只是一个tarantool测试。要运行和检查示例,请安装tarantool-test
二进制文件,并运行make run-examples
。
依赖项
~9-17MB
~214K SLoC