7得票1回答
如何在Tokio中使用async/await语法?

我正在尝试在Rust中使用async/await处理进程。我正在使用tokio和tokio-process: #![feature(await_macro, async_await, futures_api)] extern crate tokio; extern crate tokio_...

23得票3回答
如何使用tokio::join同时运行多个任务?

假设有一个存储在 Vec 中的未来(future),其长度由运行时决定,你需要并发地加入这些未来,那么该怎么做呢? 显然,根据tokio::join文档中的示例,手动指定Vec的每个可能的长度,如1、2、3等,并处理好相应情况即可。extern crate tokio; let v = Ve...

25得票3回答
什么情况下应该使用 tokio::join!() 而不是 tokio::spawn()?

假设我想使用Tokio同时下载两个网页... 我可以使用tokio::spawn()实现:async fn v1() { let t1 = tokio::spawn(reqwest::get("https://example.com")); let t2 =...

7得票1回答
trait `std::marker::Sync`没有为`std::sync::mpsc::Sender<i32>`实现

我正在尝试使用MPSC构建一个多线程应用程序,但遇到了标题中的错误。我不确定这种情况下的正确模式是什么 - 我正在寻找一种模式,可以克隆生产者通道并将其移动到新线程中以供使用。 这个新线程将保持一个打开的websocket,并在收到websocket消息时通过生产者发送消息数据的子集。由于消...

24得票1回答
在无限循环中异步重新连接客户端到服务器

我无法创建一个客户端来尝试连接服务器,并且: 如果服务器宕机,则必须在无限循环中再次尝试。 如果服务器上线并且连接成功,当连接断开时(即服务器断开客户端的连接),客户端必须重新启动无限循环以尝试连接到服务器。 这是连接到服务器的代码;当前在连接丢失时程序会退出。我不确定实现它的最佳方式...

9得票2回答
如何在Tokio中安排重复任务?

我正在用Tokio将使用Rust编写的同步套接字代码替换为异步等效代码。Tokio使用 futures 进行异步活动,因此任务被链接在一起并排队到执行线程池中执行。 我想要做的基本伪代码如下: let tokio::net::listener = TcpListener::bind(&am...

7得票1回答
异步块创建的未来不是`Send`类型,因为涉及到*mut u8。

我已经能够继续实现我的异步UDP服务器。但是,由于我的变量data的类型为*mut u8,而不是Send,因此出现了这个错误,而且出现了两次: error: future cannot be sent between threads safely help: within `impl st...

7得票3回答
如何测试绑定到tokio TcpStream的未来?

我有一个将TCP流用LinesCodec封装在Framed中的未来计划。 当我试图在测试中进行封装时,大约20%的时间会发生未来阻塞,但由于没有任何东西在监听我要连接的套接字,我希望始终获取错误: thread 'tokio-runtime-worker-0' panicked at 'e...

18得票2回答
如何优雅地响应SIGTERM信号关闭Tokio运行时?

我有一个main函数,在其中创建了一个Tokio运行时,并在其上运行了两个Future。use tokio; fn main() { let mut runtime = tokio::runtime::Runtime::new().unwrap(); runtime.spa...

8得票2回答
如何在Rust中使用hyper、tokio和futures设置HTTP请求的超时时间?

如何在使用异步Hyper(&gt;=0.11)时为HTTP请求设置超时时间? 以下为没有超时时间的代码示例: extern crate hyper; extern crate tokio_core; extern crate futures; use futures::Future; u...