async-sync-advisor
Escolher padrões async ou sync para Rust Lambda
Funções Rust Lambda frequentemente misturam cargas de trabalho I/O e CPU. Esta skill ajuda você a escolher o padrão de concorrência correto usando tokio, rayon ou spawn_blocking para performance ideal.
تنزيل ZIP المهارة
رفع في Claude
اذهب إلى Settings → Capabilities → Skills → Upload skill
فعّل وابدأ الاستخدام
اختبرها
استخدام "async-sync-advisor". Should I use async or spawn_blocking for a Lambda that calls an external API and does some data processing?
النتيجة المتوقعة:
For this mixed workload:
1. Keep async for the external API call - I/O operations benefit from async
2. Use spawn_blocking for data processing - CPU-bound work blocks the async runtime
```rust
async fn handler(event: LambdaEvent<Request>) -> Result<Response, Error> {
// Phase 1: Async I/O
let api_data = fetch_from_api(&event.payload.url).await?;
// Phase 2: CPU sync work
let processed = tokio::task::spawn_blocking(move || {
process_data(&api_data)
}).await??;
Ok(Response { processed })
}
```
استخدام "async-sync-advisor". How do I handle many independent operations in parallel in my Lambda?
النتيجة المتوقعة:
For independent I/O operations, use tokio::try_join:
```rust
async fn handler(event: LambdaEvent<Request>) -> Result<Response, Error> {
let (user, orders, recommendations) = tokio::try_join!(
fetch_user(event.payload.user_id),
fetch_orders(event.payload.user_id),
fetch_recommendations(event.payload.user_id),
)?;
Ok(Response { user, orders, recommendations })
}
```
This runs all three fetches concurrently instead of sequentially.
التدقيق الأمني
آمنAll static findings are false positives. The skill is a documentation-only skill providing guidance on Rust Lambda concurrency patterns. The detected patterns are markdown code block syntax and mentions of encryption in explanatory text, not actual executable code.
درجة الجودة
ماذا يمكنك بناءه
Otimizando cargas de trabalho mistas de I/O e CPU
Quando uma função Lambda precisa baixar dados do S3, processá-los com computação intensiva em CPU e então fazer upload dos resultados. A skill mostra como usar spawn_blocking com rayon para a fase de computação enquanto mantém I/O assíncrono.
Migrando código sync para Lambda assíncrono
Ao converter uma aplicação Rust síncrona para rodar no Lambda. A skill identifica onde usar padrões assíncronos versus onde manter código síncrono com spawn_blocking.
Melhorando tempos de cold start do Lambda
Ao avaliar se usar padrões assíncronos ou síncronos que afetam a inicialização. A skill explica trade-offs entre overhead de runtime e eficiência de CPU para diferentes tipos de carga de trabalho.
جرّب هذه الموجهات
Eu tenho um handler Rust Lambda que faz múltiplas consultas ao banco de dados. Devo usar padrões async ou sync?
Meu Lambda baixa dados do S3, processa-os com trabalho intensivo em CPU e então faz upload dos resultados. Que padrão de concorrência devo usar?
Eu tenho uma função sync que faz processamento de imagens. Como integro isso em um handler Lambda async?
Meu Lambda está usando async para trabalho CPU-bound e quero melhorar performance. Que padrões devo usar em vez disso?
أفضل الممارسات
- Use async para operações I/O-bound (HTTP, banco de dados, S3) para evitar bloquear o runtime
- Use spawn_blocking para trabalho CPU-bound para evitar bloquear o executor async
- Combine tokio::try_join para I/O concorrente com spawn_blocking para trabalho CPU paralelo
تجنب
- Usar async para trabalho intensivo em CPU que bloqueia o runtime e adiciona overhead desnecessário
- Executar operações I/O sequencialmente quando poderiam executar concorrentemente com try_join
- Misturar código async e sync sem usar spawn_blocking, causando estagnação do runtime async