#tarantool #tokio #async #async-executor

tros

您的tros从tarantool TX线程到tokio(以及其他!)

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异步中排名

Download history 141/week @ 2024-05-03 160/week @ 2024-05-10 123/week @ 2024-05-17 323/week @ 2024-05-24 366/week @ 2024-05-31 270/week @ 2024-06-07 163/week @ 2024-06-14 105/week @ 2024-06-21 213/week @ 2024-06-28 179/week @ 2024-07-05 143/week @ 2024-07-12 219/week @ 2024-07-19 392/week @ 2024-07-26 184/week @ 2024-08-02 266/week @ 2024-08-09 183/week @ 2024-08-16

每月1,073次下载

BSD-2-Clause

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"))

内部它将经过以下步骤

  1. 如果尚不存在,则创建tokio运行时;
  2. 在运行时上启动未来执行;
  3. 通过底层通道接收未来的结果。结果等待方案取决于使用的传输方式。

开始使用

  1. 要开始使用,首先了解您正在使用哪个tarantool版本。您可以通过tarantool --version来执行此操作。

    1. 如果某处提到picodata,则您正在使用我们的分支,这意味着我们可以为您提供一些优化,恭喜!🥳

    2. 如果没有提到picodata,则您正在使用原始tarantool。

  2. 然后查看下表以选择所需的功能和项目

    TT版本 Cargo功能 它启用了什么
    picodata分支 picodata PicodataTransport
    原始tarantool vanilla VanillaTransport
  3. 通过将所需功能添加到Cargo.toml中安装tros,例如:tros = { version = "0.1.0", features = [ "picodata" ] }

  4. 在您的代码中使用启用传输,例如

    1. 对于picodata: TokioExecutor::new(PicodataTransport::default()).exec(...);
    2. 对于vanilla: TokioExecutor::new(VanillaTransport::default()).exec(...);

详细信息

传输

通常您不应自行选择传输。只需选择上述描述的合适功能,您就可以使用自动选择的传输。

如果您确实对底层传输细节感兴趣,请查看传输比较表

类型 描述 优点 缺点
CBusTransport 它使用CBus单次通道接收作业结果。 因为它使用CBus通道,所以非常高效:它只是将当前纤程挂起,因此不会浪费额外资源。 截至撰写本文时,它仅可在picodata分支中使用。目前正在进行将CBus补丁推送到上游的努力。
PollTransport 它使用可配置的间隔轮询底层通道以接收作业结果。 它在所有现代tarantool版本中可用。 因为它以某个间隔轮询通道,所以效率不高。

示例

示例位于example存储库中。为了简化它们的执行,每个示例只是一个tarantool测试。要运行和检查示例,请安装tarantool-test二进制文件,并运行make run-examples

依赖项

~9-17MB
~214K SLoC