技能 async-python-patterns
🐍

async-python-patterns

安全

非同期Pythonパターンの実装

也可从以下获取: wshobson,ActiveInferenceInstitute

同時I/O操作、API、非ブロックシステムのためのasyncioパターンを使用して、高性能Pythonアプリケーションを構築します。

支持: Claude Codex Code(CC)
🥉 75 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“async-python-patterns”。 How do I run multiple async tasks concurrently in Python?

预期结果:

asyncio.gather()を使用して、複数のコルーチンを同時に実行します。例:results = await asyncio.gather(task1(), task2(), task3())。エラー処理には、return_exceptions=Trueを使用して、他のタスクを停止せずに失敗をキャッチします。

正在使用“async-python-patterns”。 What's the difference between asyncio.create_task and asyncio.ensure_future?

预期结果:

create_task()はコルーチンをイベントループで実行するようにスケジュールし、Taskを返します(Python 3.7+)。ensure_future()はコルーチンとfuturesの両方を受け入れ、Taskを返します。新しいコルーチンにはcreate_task()を、既存のfutureを受け取る可能性がある場合はensure_future()を使用してください。

正在使用“async-python-patterns”。 How do I add a timeout to an async operation?

预期结果:

単純なタイムアウトにはasyncio.wait_for()を使用します:await asyncio.wait_for(async_func(), timeout=5.0)。複数の操作の場合は、タイムアウト付きのasyncio.wait()を使用し、try/exceptブロックで'timeout'例外を処理します。

安全审计

安全
v1 • 2/24/2026

This skill is a documentation and educational resource for async Python programming patterns. The static analyzer flagged 71 potential issues, but upon manual review, all findings are FALSE POSITIVES. The 'external_commands' detections are markdown code fences (backticks), 'network' detections are example URLs in documentation, and 'blocker' detections are benign documentation patterns. No actual security risks were found.

2
已扫描文件
721
分析行数
0
发现项
1
审计总数
未发现安全问题

检测到的模式

Markdown Code Fence Detection (False Positive)Example URLs in Documentation (False Positive)Documentation Pattern Detection (False Positive)Cryptographic Algorithm Detection (False Positive)
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
100
规范符合性

你能构建什么

非同期Web APIの構築

同時データベースクエリと非同期エンドポイントを使用してFastAPIで高性能なREST APIを作成

同時データフェッチ

適切なエラー処理とタイムアウトを備えたasyncio.gatherを使用して、複数のAPIリソースを同時に取得

リアルタイムアプリケーションバックエンド

チャットやライブ通知システムのためにWebSocketサーバーと非同期メッセージ処理を実装

试试这些提示

基本的な非同期パターンリクエスト
URLからデータを取得するシンプルな非同期関数をPythonで書く方法を教えてください。適切なエラー処理とタイムアウトを含んでください。
同時操作
5つの異なるAPIエンドポイントからデータを同時に取得する必要があります。エラー処理のためにreturn_exceptions=Trueを使用したasyncio.gatherの使用方法を教えてください。
非同期コンテキストマネージャー
データベースに接続し、接続をyieldし、退出時に適切に閉じる非同期コンテキストマネージャーを作成してください。エラー処理を含んでください。
本番環境向け非同期パターン
接続プーリングを備えたデータベースをクエリする本番対応の本番対応非同期関数を構築し、指数バックオフによるリトライロジックを実装し、構造化されたログを含み、キャンセルを適切に処理します。

最佳实践

  • 無限のブロックを防ぐために常にタイムアウトを追加する - asyncio.wait_for()またはasyncio.timeout()を使用
  • 構造化された同時実行性のためにasyncio.TaskGroup(Python 3.11+)を使用して自動クリーンアップ
  • 例外を明示的に処理する - 非同期関数内でtry/exceptを使用し、例外が静かに伝播するのを防ぐ

避免

  • 非同期関数内でブロックする同期呼び出しを使用しない - これによりイベントループ全体がブロックされる
  • 適切なタスク追跡なしの「ファイア・アンド・フォーゲット」を避ける - キャンセルを有効にするためにTask参照を保存
  • awaitとtime.sleep()のようなブロックコードを混在させない - 代わりにasyncio.sleep()を使用

常见问题

asyncioとスレッドはいつ使用すべきですか?
I/Oバウンドタスク(ネットワーク、ファイル、データベース)で待ち時間が支配的な場合はasyncioを使用します。 真の並列処理が必要なCPUバウンドタスクにはスレッドを使用します。 Asyncioは、スレッドよりも少ないメモリで数千の同時I/O操作を処理します。
非同期コンテキストで同期ブロックコードを実行するには?
asyncio.to_thread()(Python 3.9+)またはloop.run_in_executor()を使用して、イベントループをブロックせずにスレッドプールでブロックする同期コードを実行します。
gather、create_task、waitの違いは?
asyncio.gather()はすべてのコルーチンを実行し、すべての結果を一緒に返します。 create_task()は単一のコルーチンをスケジュールし、後でawaitするTaskを返します。 asyncio.wait()は結果を収集せずにdone/pendingセットを返します。
同時タスクで例外を処理するには?
gather()でreturn_exceptions=Trueを使用して、すべての例外を結果としてキャッチします。 構造化された同時実行性にはTaskGroup(Python 3.11+)を使用し、失敗時に他のタスクを自動的にキャプチャしてキャンセルします。
非同期関数の外でasync withを使用できますか?
いいえ、async withは非同期関数の内部で使用する必要があります。 トップレベルでasyncio.run()でラップするか、Python 3.10+でasyncio.current_task()を使用して実行中のイベントループを使用します。
非同期コードを効果的にデバッグするには?
警告にはPYTHONASYNCIODEBUG=1環境変数を使用します。 詳細なスタックトレースにはasyncio.get_running_loop().set_debug(True)を使用します。 aiomonitorをインストールするか、通常のブレークポイント 대신asyncio.sleep()ブレークポイントを使用します。