tokio
Installation
SKILL.md
Tokio
Tokio é o executor. Axum, sqlx, reqwest e WS rodam nele. HTTP: axum. Produção/shutdown: rust-axum-production. Hub WS: rust-axum-websocket. Linguagem: rust.
Não troque para async-std/smol numa API Axum. Multi-thread (#[tokio::main]) é o default de serviço; current_thread só se o binário já for assim (CLI, teste).
Regras inegociáveis
- Não bloqueie workers: sem
std::thread::sleep,std::fspesado, mutex std longo, DNS/waitsíncrono no handler. - CPU/FS/legacy sync →
spawn_blocking(ou crate async). I/O de rede → APIs Tokio/async. - Toda task tem fim:
JoinHandle,JoinSetou cancelamento. Semspawnfire-and-forget de trabalho de negócio. select!com cancelamento justo; a ramificação que perde não deixa I/O órfão (useAbortHandle/ drop do future /CancellationToken).Context/deadline do request: propague cancel, não ignoreJoinHandlede handler.