there is no reactor running, must be called from the context of a Tokio 1.x runtime Rust Origin: Application & API OSI layer 7 · Application Last updated 5 Nov 2026

Rust: thread 'main' panicked: there is no reactor running, must be called from the context of a Tokio 1.x runtime

A Tokio API (timer, TCP, tokio::spawn) was used outside a running Tokio runtime.

Exact message you may see there is no reactor running, must be called from the context of a Tokio 1.x runtimethere is no reactor running, must be called from the context of a Tokio 0.2.x runtimethread 'main' panicked: there is no reactor runningthere is no reactor running
Seen on: Rust

Meaning

Run inside a runtime: #[tokio::main], Runtime::new()?.block_on(...), or #[tokio::test]. When mixing libraries, ensure they use the same Tokio major version (Tokio 0.2 vs 1.x mismatch shows this message). Don't call async code from plain threads without entering the runtime (Handle::enter()).

Common causes

  • async fn main without the Tokio macro
  • Calling tokio::spawn/timers from a non-runtime thread
  • Tokio 0.2/0.3 dependency mixed with 1.x
  • Tests without #[tokio::test]
  • Libraries using their own runtime

⚡ Quick fix

  1. #[tokio::main] / #[tokio::test]
  2. Use Handle::current() and handle.spawn from other threads
  3. cargo tree -d | grep tokio to find version mixes

Detailed fix by platform

Rust

  1. cargo tree -i tokio to see which tokio versions are in the graph

How to diagnose

  1. Runtime — Active?
  2. Versions — One tokio?
  3. Thread — Entered handle?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: Application & API. Errors that are often confused with or caused by this one (click to open):

Blocking waiting for file lock on package cache / build directory — Cargo: Blocking waiting for file lock on package cache / on build directory (Rust)Blocking waiting for …Cannot start a runtime from within a runtime (Tokio) — 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 (Rust)Cannot start a runtim…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/...` (Rust)cargo: failed to get …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 (Rust)cargo: failed to sele…E0521: borrowed data escapes outside of function — Rust: error[E0521]: borrowed data escapes outside of function — `data` escapes the function body here (tokio::spawn requires 'static) (Rust)E0521: borrowed data …E0728: await is only allowed inside async functions and blocks — Rust: error[E0728]: `await` is only allowed inside `async` functions and blocks (Rust)E0728: await is only …E0752: main function is not allowed to be async — Rust: error[E0752]: `main` function is not allowed to be `async` (Rust)E0752: main function …there is …

Explore the map of this error Full error map →

🧠 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.