首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“‘rocket worker-thread”在“无法在不允许阻塞的上下文中删除运行时”时出现异常。

“‘rocket worker-thread”在“无法在不允许阻塞的上下文中删除运行时”时出现异常。
EN

Stack Overflow用户
提问于 2021-10-01 15:33:08
回答 1查看 118关注 0票数 1

我正在尝试调用下游API并将结果作为Json对象返回。我使用的是使用tokioreqwest

Cargo.toml

代码语言:javascript
复制
[dependencies]
rocket = { version = "0.5.0-rc.1", features = ["secrets", "tls", "json"] }
reqwest = { version = "0.11", features = ["blocking", "json"] }
tokio = { version = "1", features = ["full"] }

main.rs

代码语言:javascript
复制
#[post("/teams")]
fn teams() -> Json<Vec<Team>> {
    let mut r = reqwest::blocking::get("https://example.com");
    if r.is_ok() {
        return Json(get_teams(r.unwrap().text().unwrap()));
    } else {
        return Json(Vec::new());
    }
}

我得到的错误是:

代码语言:javascript
复制
thread 'rocket-worker-thread' panicked at 'Cannot drop a runtime in a context where blocking is not allowed. This happens when a runtime is dropped from within an asynchronous context.'

这是因为我在使用阻塞调用吗?如何进行阻塞调用并简单地返回结果。任何指导都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-12-03 02:54:24

这就是我所做的:

代码语言:javascript
复制
#[post("/teams")]
async fn teams() -> Json<Vec<Team>> {
    return Json(get_teams(reqwest::get("https://example.com").await.unwrap().text().await.unwrap()));
}

Cargo.toml

代码语言:javascript
复制
reqwest = { version = "0.11", features = ["blocking", "json"] }
tokio = { version = "1", features = ["full"] }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69408496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档