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. 05使用 pytest-asyncio 测试
  6. 06常见问题与最佳实践

适用场景

  1. 01构建异步 Web API
  2. 02执行并发 I/O 操作
  3. 03创建并发网络爬虫
  4. 04开发 WebSocket 应用

安装

复制下面的命令,在终端中运行。

$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

详细介绍

原文在翻译后有更新,译文可能不是最新。

异步 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 操作
  • 使用并发请求创建网页爬虫
  • 开发实时应用(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——网页抓取和数据库操作
  • 参见 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 装饰。

评论

支持 Markdown