المهارات async-sync-advisor
📦

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.

يدعم: Claude Codex Code(CC)
📊 70 كافٍ
1

تنزيل ZIP المهارة

2

رفع في Claude

اذهب إلى Settings → Capabilities → Skills → Upload skill

3

فعّل وابدأ الاستخدام

اختبرها

استخدام "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.

التدقيق الأمني

آمن
v1 • 1/23/2026

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.

1
الملفات التي تم فحصها
183
الأسطر التي تم تحليلها
0
النتائج
1
إجمالي عمليات التدقيق
لا توجد مشكلات أمنية
تم تدقيقه بواسطة: claude

درجة الجودة

38
الهندسة المعمارية
100
قابلية الصيانة
87
المحتوى
22
المجتمع
100
الأمان
91
الامتثال للمواصفات

ماذا يمكنك بناءه

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.

جرّب هذه الموجهات

Pergunta básica sobre padrão
Eu tenho um handler Rust Lambda que faz múltiplas consultas ao banco de dados. Devo usar padrões async ou sync?
Otimização de carga de trabalho mista
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?
Convertendo código existente
Eu tenho uma função sync que faz processamento de imagens. Como integro isso em um handler Lambda async?
Ajuste de performance
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

الأسئلة المتكررة

Qual é a diferença entre async e spawn_blocking?
Async permite que o runtime manipule outras tarefas enquanto espera por I/O. spawn_blocking move trabalho síncrono de CPU para um pool de threads separado para que não bloqueie o runtime async. Use async para I/O e spawn_blocking para trabalho CPU.
Quando devo usar rayon em vez de spawn_blocking?
Use rayon quando você tem trabalho CPU paralelo em coleções que podem ser divididas entre threads. Combine rayon com spawn_blocking para executar trabalho CPU paralelo sem bloquear o runtime async.
Usar spawn_blocking adiciona latência ao meu Lambda?
spawn_blocking usa um pool de threads, então tem algum overhead. No entanto, isso é geralmente muito melhor do que bloquear o runtime async, que impediria o tratamento de outras requisições concorrentes.
Posso usar async para trabalho CPU-bound?
Você pode, mas não é recomendado. Trabalho CPU-bound em uma task async bloqueia todo o runtime async. Use spawn_blocking em vez disso para mover trabalho de CPU para um pool de threads dedicado.
Como eu trato erros em spawn_blocking?
O operador ? funciona diferente dentro de spawn_blocking. Use o ? duplo (??) quando aguarda a task spawnada para propagar erros tanto do spawn quanto do trabalho blocking.
Esta skill modifica meu código Lambda?
Não. Esta skill fornece orientação e sugestões de padrões. Ela lê seus handlers Lambda e explica quais padrões usar, mas não executa ou modifica nenhum código.

تفاصيل المطور

بنية الملفات

📄 SKILL.md