mcpField
P
python-async

python-async

github.com/athola開発343102 回インストール1 日前に更新
リポジトリ

python-async について

Python アプリケーションで asyncio と async/await のパターンを使うためのスキルです。並行処理、エラー処理、テストなどを用途別のモジュールで案内します。

主な機能

  1. 01async/await の基本パターン
  2. 02タスクと並行処理の管理
  3. 03セマフォとロックによるレート制御
  4. 04タイムアウト、エラー、キャンセル処理
  5. 05pytest-asyncio によるテスト
  6. 06よくある問題とベストプラクティス

活用シーン

  1. 01非同期 Web API の構築
  2. 02I/O 操作の並行実行
  3. 03並行 Web スクレイパーの作成
  4. 04WebSocket アプリケーションの開発

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/athola/claude-night-market --skill python-async

インストール後、Claude Code で/python-asyncを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

modules/
advanced-patterns.md
basic-patterns.md
concurrency-control.md
error-handling-timeouts.md
pitfalls-best-practices.md
real-world-applications.md
testing-async.md

詳細

Async Python パターン

Python アプリケーション向けの asyncio と async/await のパターンです。

クイックスタート

import asyncio

async def main():
    print("Hello")
    await asyncio.sleep(1)
    print("World")

asyncio.run(main())

使用する場面

  • 非同期 Web API(FastAPI、aiohttp)の構築
  • 並行 I/O 処理の実装
  • 並行リクエストを行う Web スクレイパーの作成
  • リアルタイムアプリケーション(WebSockets)の開発
  • 複数の独立したタスクの同時処理
  • 非同期通信を行うマイクロサービスの構築

使用しない場面

  • CPU 負荷の高い処理の最適化には、代わりに python-performance を使用します
  • 非同期コードのテストには、代わりに python-testing の async モジュールを使用します

モジュール

このスキルでは段階的な読み込みを使用します。内容は目的別のモジュールに整理されています。

  • modules/basic-patterns.md を参照してください。基本的な async/await、gather()、タスク管理について説明します
  • modules/concurrency-control.md を参照してください。レート制限のためのセマフォとロックについて説明します
  • modules/error-handling-timeouts.md を参照してください。エラー処理、タイムアウト、キャンセルについて説明します
  • modules/advanced-patterns.md を参照してください。コンテキストマネージャー、イテレーター、プロデューサー・コンシューマーについて説明します
  • modules/testing-async.md を参照してください。pytest-asyncio を使ったテストについて説明します
  • modules/real-world-applications.md を参照してください。Web スクレイピングとデータベース操作について説明します
  • modules/pitfalls-best-practices.md を参照してください。よくある間違いとベストプラクティスについて説明します

ニーズに応じて特定のモジュールを読み込むか、詳細なガイダンスが必要な場合はすべてを参照してください。

終了基準

  • 非同期パターンが正しく適用されている
  • 非同期コードにブロッキング処理がない
  • 適切なエラー処理が実装されている
  • 必要な箇所でレート制限が設定されている
  • pytest-asyncio でテストが成功する

トラブルシューティング

よくある問題

RuntimeError: no current event loop エントリーポイントとして asyncio.run() を使用してください。Python 3.10 以降では get_event_loop() の使用を避けてください。

非同期コンテキストでのブロッキング呼び出し 同期 I/O を asyncio.to_thread() または loop.run_in_executor() に移してください。

テストがいつまでも終了しない pytest-asyncio がインストールされていること、およびテスト関数に @pytest.mark.asyncio が付与されていることを確認してください。

コメント