Tokio运行时当前未运行时,“线程'main'感到恐慌”

米兰达·阿巴西(Miranda Abbasi)

我正在弹性搜索的博客文章中使用有关其新包装箱的示例代码,但无法使其按预期工作。出现线程恐慌thread 'main' panicked at 'not currently running on the Tokio runtime.'

什么是Tokio运行时,如何配置它,为什么必须?

use futures::executor::block_on;

async elastic_search_example() -> Result<(), Box<dyn Error>> {
    let index_response = client
        .index(IndexParts::IndexId("tweets", "1"))
        .body(json!({
            "user": "kimchy",
            "post_date": "2009-11-15T00:00:00Z",
            "message": "Trying out Elasticsearch, so far so good?"
        }))
        .refresh(Refresh::WaitFor)
        .send()
        .await?;
    if !index_response.status_code().is_success() {
        panic!("indexing document failed")
    }
    let index_response = client
        .index(IndexParts::IndexId("tweets", "2"))
        .body(json!({
            "user": "forloop",
            "post_date": "2020-01-08T00:00:00Z",
            "message": "Indexing with the rust client, yeah!"
        }))
        .refresh(Refresh::WaitFor)
        .send()
        .await?;
    if !index_response.status_code().is_success() {
        panic!("indexing document failed")
    }
}

fn main() {
    block_on(elastic_search_example());
}
地狱犬

看来Elasticsearch的板条箱在内部使用Tokio,因此您也必须使用它来匹配他们的假设。

寻找block_on他们的文档的功能,我有这个因此,看来您main应该看起来像这样:

use tokio::runtime::Runtime;

fn main() {
    Runtime::new()
        .expect("Failed to create Tokio runtime")
        .block_on(elastic_search_example());
}

或者,您可以使自己main本身与属性macro异步,这将生成运行时创建并block_on为您调用:

#[tokio::main]
async fn main() {
    elastic_search_example().await;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

引言中的Actix Web示例提供了一个运行时错误线程“ main”,它对“ None”值上的“ Option :: unwrap()”感到恐慌。

通过 FFI 删除 Tokio 运行时出现“无法在不允许阻塞的上下文中删除运行时”的恐慌。

使用try宏处理运行时恐慌

为什么我的两个切片之一会因“运行时错误:索引超出范围”而感到恐慌?

对这些渐近符号及其运行时间感到困惑

Java运行时错误。缺少静态main方法

运行时错误:在java程序中找不到main

Eclipse:运行时如何接受main参数

如何在运行时更改MAIN活动

不从__main__运行时无法打开文件

线程“main”中的异常 java.lang.NoClassDefFoundError: 当使用控制台运行时。可能与 Maven 相关

线程“main”因“试图与溢出相乘”而恐慌

解析文件返回错误“线程‘main’恐慌”

Rust:在 iframe 中运行但不在常规浏览器选项卡中运行时线程发生恐慌

恐慌:运行时错误:索引超出范围处理文件

Golang Cgo:恐慌:运行时错误:cgo参数具有指向Go指针的Go指针

从另一个包调用资源时出现运行时恐慌

在 go 中转换数据结构:恐慌:运行时错误:索引超出范围

恐慌:运行时错误:切片边界超出范围 [2:1]

Golang恐慌:运行时错误:无效的内存地址或nil指针取消引用

同时解析JSON-运行时错误的恐慌(与解码有关)

对于导致恐慌的循环:由于nil映射或切片导致运行时错误

Golang:恐慌:运行时错误:无效的内存地址或nil指针取消引用

为什么即使我有#[tokio :: main],也会收到错误消息“没有反应堆在运行,必须从Tokio运行时的上下文中调用”?

在main()外部访问二维数组会导致运行时分段错误?

函数内部或外部的运行时作用域和“ main”符号不同

在非启动时运行时main()函数的规则与启动时相同吗?

Golang集群文件锁定引发恐慌:运行时错误:无效的内存地址或nil指针取消引用

在Linux上使用gaction更新Google Home / Assistant软件包时,Golang运行时会出现恐慌?