Rust: thread 'main' panicked: Cannot start a runtime from within a runtime — a function like `block_on` tried to block a thread that drives async tasks
Blocking code (block_on, reqwest::blocking) was called inside an async context.
Cannot start a runtime from within a runtime. This happens because a function (like `block_on`) attempted to block the current thread while the thread is being used to drive asynchronous tasks.Cannot drop a runtime in a context where blocking is not allowedCannot start a runtime from within a runtimethread 'main' panicked: Cannot start a runtime from within a runtime Meaning
Don't call block_on within async code. Make the caller async and .await, or use tokio::task::spawn_blocking for blocking work, or tokio::task::block_in_place (multi-thread runtime). reqwest::blocking inside #[tokio::main] triggers this: use the async client.
Common causes
Runtime::block_oninsideasync fnreqwest::blocking::getin async code- Mixing sync libraries' blocking calls in tasks
- Tests using
#[tokio::test]with blocking clients - Nested runtimes
⚡ Quick fix
- Use async APIs and
.await tokio::task::spawn_blocking(|| blocking_work()).await- Replace
reqwest::blockingwith the async client
Detailed fix by platform
Rust
- `let r = tokio::task::spawn_blocking(move
- heavy()).await?;`
How to diagnose
- Call — block_on in async?
- Client — blocking?
- Fix — spawn_blocking?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- Blocking waiting for file lock on package cache / build directory Cargo: Blocking waiting for file lock on package cache / on build directory
- cargo: failed to get from registry (spurious network error) Cargo: warning: spurious network error (2 tries remaining): [35] SSL connect error / error: failed to download from `https://index.crates.io/...`
- cargo: failed to select a version for the requirement Cargo: error: failed to select a version for the requirement `serde = "^2.0"` — candidate versions found which didn't match: 1.0.197
Most viewed in Rust
Other ways to find it
Where this error sits
Origin: Application & API. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 5 Nov 2026