问题标签 [tokio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
580 浏览

postgresql - 是否可以在没有 Struct 的情况下反序列化 tokio_postgres 行?

我是 Rust 的新手,正在尝试构建一个简单的 API 服务器,该服务器连接到 Postgresql 数据库,该数据库具有运行直接 sql 查询并输出 JSON 作为结果的 API 路由。

我做了谷歌,发现所有可用包中使用的所有示例都需要首先将每行数据解包到 Struct 中,这是我试图绕过的东西。我希望能够运行动态 sql 查询并将其作为 JSON 数据输出到客户端。

我正在使用 actix-web、deadpool-postgres 和 tokio_postgres

这是我目前所拥有的 main.rs

这是 handlers.rs

如果您能够在没有 Struct 的情况下执行此操作,有人可以分享您的代码片段吗?谢谢

0 投票
1 回答
201 浏览

rust - 如何将流向量映射到可窥视对象?

我有 N futures::Stream,每个Item都有一个时间戳。我想将它们合并排序成一个流,所以我想将所有流转换为 peekable:

我被这个错误困住了:

peekable()需要Self: Sized.

这是否意味着T.peekable()并且Box<T>.peekable需要sizeof(T)在编译时知道?如果是这样,为什么?什么是解决方法?

我试过了

  • Vec<Box<dyn Stream>>
  • Vec<Box<dyn Stream + Sized>>
  • Vec<Box<_>>
  • Vec<&mut dyn Stream>
  • Vec<&mut dyn Stream + Sized>
0 投票
2 回答
8993 浏览

rust - tokio 在 rust 中加入多个任务

想象一些futures存储在一个Vec长度由runtime确定的a中,你应该同时加入这些futures,你应该怎么做?

显然,通过文档中的示例tokio::join,手动指定可能的每个长度Vec,例如 1、2、3,......并且处理可敬的情况应该有效。

而且我还注意到 tokio::join! 当我使用类似的语法时,将列表作为文档中的参数

或类似的东西

它只是不起作用

问题来了,是否有任何途径可以更有效地加入这些期货,或者我是否应该错过文件所说的内容?

0 投票
0 回答
1110 浏览

asynchronous - 将 tokio::spawn 与具有可变引用的未来一起使用时,“借用的值不够长”

以下代码无法编译,因为编译器无法保证hashmap_of_lists会存在足够长的时间。我无法克服这一点。

我尝试过使用ArcMutex但是由于内部的异步方式some_func和使用,我遇到了其他问题Mutex

我收到这个错误

0 投票
1 回答
354 浏览

rust - Rust tokio 调度程序工作窃取与全局队列

在 rust tokio 中,当处理器完成运行队列中的所有任务时,它们是首先查看全局队列以获取更多任务,还是首先尝试从兄弟处理器中窃取工作?

0 投票
1 回答
776 浏览

rust - 尝试使用 Rust tokio Framed LinesCodec 写入服务器

以下代码成功地从我的服务器读取,但是当识别到特定的行命令时,我似乎无法获得正确的语法或语义来写回服务器。我需要创建一个 FramedWriter 吗?我发现的大多数示例都拆分了套接字,但这似乎有点过头了,我希望编解码器能够通过提供一些异步写入方法来处理双向 io。任何帮助表示赞赏。

货运.toml

main.rs

0 投票
1 回答
763 浏览

rust - Tokio 任务在完成前退出

下面的程序应该从多个线程定期打印,但tokio::time::sleep没有按我预期的那样工作:

它的输出是

我希望看到消息threadN-running,但没有输出。我不知道为什么程序突然退出。有人可以告诉我原因吗?

我的Cargo.toml样子是这样的:

另外,我的货物版本是:

0 投票
1 回答
2465 浏览

websocket - 问:Rust,你如何使用 tokio tungstenite accept_hdr_async 函数来获取标头?

我正在尝试使用 Rust tokio tungstenite 包来创建基于 URL 的聊天室。例如,我有一个客户端连接到ws://localhost:8080/abcd. 我的理解是我必须使用该tokio_tungstenite::accept_hdr_async函数来访问标题以获取/abcd路径,但是我在使用它时遇到了麻烦。我的第二个论点copy_headers_callback应该是什么?

不确定我的方法是否合理。我是 Rust 的新手,它让我很头疼。我将不胜感激任何见解!

我的代码基于此示例https://github.com/snapview/tokio-tungstenite/blob/master/examples/server.rs

我的错误:

0 投票
1 回答
234 浏览

rust - 一旦 tokio::process::Child 退出而不关闭 stdin,如何创建完成的未来

如何创建一个在 a 终止tokio::process::Child而不关闭的情况下完成的未来stdin。我知道try_wait可以测试一个进程是否在没有关闭的情况下终止stdin,但我希望这种行为具有未来的语义。

我试图为这个问题准备一个 MRE,我的代码stdin在调用后由于写入而出现恐慌,但我观察到的与等待方法wait的文档中所述的行为不匹配。我希望看到线路因管道破裂而崩溃,因为应该由.tokio::process::Childstdin.write_u8(24).await.unwrap();stdinwait

0 投票
1 回答
581 浏览

rust - tokio是多线程的吗?

我知道 tokio 允许编写并发代码。但我不确定它是否并行运行。我的电脑有八个核心。所以理想情况下我会运行不超过八个线程。如果我需要更多并发性,我会在这些线程之上运行协程(使用 tokio)。

当然,除非 tokio 已经是多线程的。在这种情况下,一开始就创建这八个线程会适得其反。所以我想问的是,默认情况下 tokio 是多线程的,还是我应该自己实现的?