gpt4 book ai didi

multithreading - Rust多线程HTTP请求,是否从响应中获取所有数据?

转载 作者:行者123 更新时间:2023-12-03 11:48:04 25 4
gpt4 key购买 nike

因此,我有以下代码将多线程请求发送到域列表。到目前为止,我已经能够从响应中获取单个数据,例如字节,URL,状态码等,但不是全部都收集在一起。我想将所有这些值存储到向量中,以便可以将其写入文件。我知道这可能是一个 super 愚蠢的问题,但我已经为此工作了好几天,无法解决。任何帮助表示赞赏!

#[tokio::main]
async fn get_request(urls: Vec<&str>, paths: Vec<&str>) {
let client = Client::new();
for path in paths {
let urls = urls.clone();
let bodies = stream::iter(urls)
.map(|url| {
let client = &client;
async move {
let mut full_url = String::new();
full_url.push_str(url);
full_url.push_str(path);
let resp = client
.get(&full_url)
.timeout(Duration::from_secs(3))
.send()
.await;
resp
}
})
.buffer_unordered(PARALLEL_REQUESTS);

bodies
.for_each(|b| async {
match b {
Ok(b) => {
let mut body_test = &b.bytes().await;
match body_test {
Ok(body_test) => {
let mut stringed_bytes = str::from_utf8(&body_test);
match stringed_bytes {
Ok(stringed_bytes) => {
println!("stringed bytes: {}", stringed_bytes);
}
Err(e) => println!("Stringified Error: {}", e),
}
}
Err(e) => println!("body Error: {}", e),
}
}
Err(e) => println!("Got an error: {}", e),
}
})
.await;
}
}

最佳答案

我将尝试创建一个结构,该结构将存储您想要从主体或hyper::Response获取的期望输出。例如:

struct DesiredContent {
code: Option<u16>,
body: Json
...
}
然后实现 impl TryFrom<hyper::Response> for DesiredContent(这假设您可能会遇到类似404错误的失败案例)

关于multithreading - Rust多线程HTTP请求,是否从响应中获取所有数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63205889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com