Hi to all, i'm trying to upgrade a rust program that download manga to the new version of tokio, but i'm having problem when i execute the code:
thread 'main' panicked at 'not currently running on the Tokio runtime.'
i copy the code main code:
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>>{
let mut f = tokio::fs::File::open("mangatown.txt").await.expect("Fallo al abrir fichero mangatown.txt");
let mut buffer = String::new();
f.read_to_string(&mut buffer).await.expect("Fallo al leer fichero mangatown.txt");
//println!("{:?}", buffer);
let vec: Vec<&str> = buffer.split('\n').collect();
for line in vec {
println!("{}",line);
let url = Url::parse(&line).expect("Fallo en la tranformación url de la serie");
bajar_manga(url).await;
println!("Lo ha intentado")
}
Ok(())
}
and the signature function that i don't see the execution is this:
async fn bajar_manga(url_serie: Url) {
println!("this is a test to see calling in the tokio 0.3")
}
i'm not very sure why i can't call my async fn with await in the main that have the tokyo runtime.
I have copy my code, i know that i have warnings about the function borrar_directorio_y_panic (i know that this function doesn't do anithing because how i'm calling it)
i can pass my cargo.toml
[package]
name = "scrape_mangatown_reqwest"
version = "3.0.0"
authors = ["Guillermo Cabezas <kapoira@gmail.com>"]
edition = "2018"
[dependencies]
tokio = { version = "0.3.0", features = ["full"] }
tokio-fs = "0.1.6"
select = "0.5.0"
reqwest = { version = "0.10.0", features = ["rustls-tls"]}
ansi_term = "0.12.1"
url = "2.1.0"
[profile.release]
lto = "fat"
Now it'seems that don't compile in the playground and i don't why
I can't reproduce the error on the playground locally. You can try to open an issue. As for the panic you got, I can reproduce it locally. The problem is probably that you depend on tokio 0.3.0, but then use tokio 0.2.22 through reqwest. When I switch the tokio 0.3.0 dependency to 0.2.22 it works without problem. Or at least I assume that the following is the expected output:
https://example.com
this is a test to see calling in the tokio 0.3
https://example.com/ No se ha podido obtener la información del manga
Parando.
Lo ha intentado
Ok, now i'm seeing that i'm using the tokio-fs and it's deprecated, and what are you talking about the reqwest is perhaps the problem because in the terminal when i'm running the program i see:
thread 'main' panicked at 'not currently running on the Tokio runtime.', /home/kapoira/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.22/src/runtime/handle.rs:118:28
Yeah this is right. Just to be exact, reqwest version 0.1 depends on tokio version 2.0. Changing tokio back to 2.0 instead of 3.0 fixes this issue. Hopefully the next version of reqwest will be compatible with tokio 3.0