问题标签 [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.
postgresql - 是否可以在没有 Struct 的情况下反序列化 tokio_postgres 行?
我是 Rust 的新手,正在尝试构建一个简单的 API 服务器,该服务器连接到 Postgresql 数据库,该数据库具有运行直接 sql 查询并输出 JSON 作为结果的 API 路由。
我做了谷歌,发现所有可用包中使用的所有示例都需要首先将每行数据解包到 Struct 中,这是我试图绕过的东西。我希望能够运行动态 sql 查询并将其作为 JSON 数据输出到客户端。
我正在使用 actix-web、deadpool-postgres 和 tokio_postgres
这是我目前所拥有的 main.rs
这是 handlers.rs
如果您能够在没有 Struct 的情况下执行此操作,有人可以分享您的代码片段吗?谢谢
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>
rust - tokio 在 rust 中加入多个任务
想象一些futures存储在一个Vec
长度由runtime确定的a中,你应该同时加入这些futures,你应该怎么做?
显然,通过文档中的示例tokio::join
,手动指定可能的每个长度Vec
,例如 1、2、3,......并且处理可敬的情况应该有效。
而且我还注意到 tokio::join! 当我使用类似的语法时,将列表作为文档中的参数
或类似的东西
它只是不起作用
问题来了,是否有任何途径可以更有效地加入这些期货,或者我是否应该错过文件所说的内容?
asynchronous - 将 tokio::spawn 与具有可变引用的未来一起使用时,“借用的值不够长”
以下代码无法编译,因为编译器无法保证hashmap_of_lists
会存在足够长的时间。我无法克服这一点。
我尝试过使用Arc
,Mutex
但是由于内部的异步方式some_func
和使用,我遇到了其他问题Mutex
。
我收到这个错误
rust - Rust tokio 调度程序工作窃取与全局队列
在 rust tokio 中,当处理器完成运行队列中的所有任务时,它们是首先查看全局队列以获取更多任务,还是首先尝试从兄弟处理器中窃取工作?
rust - 尝试使用 Rust tokio Framed LinesCodec 写入服务器
以下代码成功地从我的服务器读取,但是当识别到特定的行命令时,我似乎无法获得正确的语法或语义来写回服务器。我需要创建一个 FramedWriter 吗?我发现的大多数示例都拆分了套接字,但这似乎有点过头了,我希望编解码器能够通过提供一些异步写入方法来处理双向 io。任何帮助表示赞赏。
货运.toml
main.rs
rust - Tokio 任务在完成前退出
下面的程序应该从多个线程定期打印,但tokio::time::sleep
没有按我预期的那样工作:
它的输出是
我希望看到消息threadN-running
,但没有输出。我不知道为什么程序突然退出。有人可以告诉我原因吗?
我的Cargo.toml
样子是这样的:
另外,我的货物版本是:
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:
我的错误:
rust - 一旦 tokio::process::Child 退出而不关闭 stdin,如何创建完成的未来
如何创建一个在 a 终止tokio::process::Child
而不关闭的情况下完成的未来stdin
。我知道try_wait
可以测试一个进程是否在没有关闭的情况下终止stdin
,但我希望这种行为具有未来的语义。
我试图为这个问题准备一个 MRE,我的代码stdin
在调用后由于写入而出现恐慌,但我观察到的与等待方法wait
的文档中所述的行为不匹配。我希望看到线路因管道破裂而崩溃,因为应该由.tokio::process::Child
stdin.write_u8(24).await.unwrap();
stdin
wait
rust - tokio是多线程的吗?
我知道 tokio 允许编写并发代码。但我不确定它是否并行运行。我的电脑有八个核心。所以理想情况下我会运行不超过八个线程。如果我需要更多并发性,我会在这些线程之上运行协程(使用 tokio)。
当然,除非 tokio 已经是多线程的。在这种情况下,一开始就创建这八个线程会适得其反。所以我想问的是,默认情况下 tokio 是多线程的,还是我应该自己实现的?