Token导航 LogoToken导航TokenDH.com
开发需要联网github未标认证来源可访问clear审计提醒

asyncio-programming异步编程

Agent Skill

asyncio-programming 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

25,282

周安装

727

GitHub Stars

5

下载量

7,558
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:asyncio-programming(异步编程)
来源仓库:https://github.com/pluginagentmarketplace/custom-plugin-python
仓库路径:skills/asyncio-programming
安装命令:
npx skills add https://github.com/pluginagentmarketplace/custom-plugin-python --skill 'Asyncio Programming'
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/pluginagentmarketplace/custom-plugin-python --skill 'Asyncio Programming'

简介

用于处理 GitHub 仓库状态、Issue、Pull Request 及代码协作事项,适合在 Codex、Claude、Cursor、Gemini CLI 中围绕项目变更进行信息整理与流程跟踪。

  • 它提供异步编程基础与高级用法,涵盖 async/await 语法、事件循环管理和并发任务调度,适用于 I/O 密集型应用开发。
  • 使用时可结合具体任务调用相关命令,但需注意权限范围,避免触发不必要的网络或系统操作;建议先检查仓库维护状态和 API 限制。
  • 安装前应确认是否具备 GitHub 访问权限,并评估是否会引入外部依赖或执行敏感命令,防止意外修改或数据泄露。
  • asyncio-programming 属于开发类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Asyncio Programming

Overview

Master asynchronous programming in Python with asyncio. Learn to write concurrent code that efficiently handles I/O-bound operations, build async web applications, and understand the async/await paradigm.

Learning Objectives

  • Understand asynchronous programming concepts
  • Write async functions with async/await syntax
  • Manage concurrent operations with asyncio
  • Build async web applications
  • Handle async I/O operations efficiently
  • Debug and test async code

Core Topics

1. Async/Await Basics

  • Understanding coroutines
  • async/await syntax
  • Event loop fundamentals
  • Running async functions
  • Async vs sync execution
  • Common pitfalls

Code Example:

import asyncio
import time

# Synchronous version (slow)
def fetch_data_sync(url):
    print(f"Fetching {url}...")
    time.sleep(2)  # Simulating network delay
    return f"Data from {url}"

def main_sync():
    urls = ['url1', 'url2', 'url3']
    results = []
    for url in urls:
        data = fetch_data_sync(url)
        results.append(data)
    return results

# Takes 6 seconds (2 * 3)
start = time.time()
main_sync()
print(f"Sync took: {time.time() - start:.2f}s")

# Asynchronous version (fast)
async def fetch_data_async(url):
    print(f"Fetching {url}...")
    await asyncio.sleep(2)  # Non-blocking sleep
    return f"Data from {url}"

async def main_async():
    urls = ['url1', 'url2', 'url3']
    # Create tasks and run concurrently
    tasks = [fetch_data_async(url) for url in urls]
    results = await asyncio.gather(*tasks)
    return results

# Takes 2 seconds (concurrent execution)
start = time.time()
asyncio.run(main_async())
print(f"Async took: {time.time() - start:.2f}s")

2. Asyncio Tasks & Coroutines

  • Creating and managing tasks
  • asyncio.gather() vs asyncio.wait()
  • Task cancellation
  • Task groups (Python 3.11+)
  • Exception handling in tasks
  • Timeouts

Code Example:

import asyncio

async def process_item(item_id, delay):
    print(f"Processing item {item_id}")
    await asyncio.sleep(delay)
    if item_id == 3:
        raise ValueError(f"Item {item_id} failed!")
    return f"Result {item_id}"

async def main():
    # Method 1: gather (returns results in order)
    tasks = [
        process_item(1, 1),
        process_item(2, 2),
        process_item(3, 1),
    ]
    try:
        results = await asyncio.gather(*tasks, return_exceptions=True)
        for i, result in enumerate(results):
            if isinstance(result, Exception):
                print(f"Task {i} failed: {result}")
            else:
                print(f"Task {i} result: {result}")
    except Exception as e:
        print(f"Error: {e}")

    # Method 2: wait (returns done/pending sets)
    tasks = [
        asyncio.create_task(process_item(i, i))
        for i in range(1, 4)
    ]
    done, pending = await asyncio.wait(tasks, timeout=2.5)

    print(f"Completed: {len(done)}, Pending: {len(pending)}")

    # Cancel pending tasks
    for task in pending:
        task.cancel()

    # Method 3: Task groups (Python 3.11+)
    async with asyncio.TaskGroup() as tg:
        for i in range(1, 4):
            tg.create_task(process_item(i, 1))
    # All tasks completed or exception raised

asyncio.run(main())

3. Async I/O Operations

  • Async file operations (aiofiles)
  • Async HTTP requests (aiohttp)
  • Async database operations (asyncpg, motor)
  • Async messaging (aio-pika)
  • Streams and protocols

Code Example:

import asyncio
import aiohttp
import aiofiles
from typing import List

# Async HTTP requests
async def fetch_url(session, url):
    async with session.get(url) as response:
        return await response.text()

async def fetch_multiple_urls(urls: List[str]):
    async with aiohttp.ClientSession() as session:
        tasks = [fetch_url(session, url) for url in urls]
        results = await asyncio.gather(*tasks)
        return results

# Async file operations
async def read_file_async(filepath):
    async with aiofiles.open(filepath, 'r') as f:
        content = await f.read()
        return content

async def write_file_async(filepath, content):
    async with aiofiles.open(filepath, 'w') as f:
        await f.write(content)

# Async database operations (example with asyncpg)
import asyncpg

async def fetch_users():
    conn = await asyncpg.connect(
        user='user',
        password='password',
        database='mydb',
        host='localhost'
    )
    try:
        rows = await conn.fetch('SELECT * FROM users')
        return rows
    finally:
        await conn.close()

# Usage
async def main():
    # Fetch URLs concurrently
    urls = [
        'https://api.example.com/data1',
        'https://api.example.com/data2',
        'https://api.example.com/data3',
    ]
    results = await fetch_multiple_urls(urls)

    # Read/write files
    content = await read_file_async('input.txt')
    await write_file_async('output.txt', content.upper())

    # Database operations
    users = await fetch_users()
    print(f"Found {len(users)} users")

asyncio.run(main())

4. Async Web Frameworks

  • FastAPI async routes
  • aiohttp web server
  • WebSocket handling
  • Background tasks
  • Middleware and dependencies

Code Example:

# FastAPI async example
from fastapi import FastAPI, BackgroundTasks
import asyncio

app = FastAPI()

# Async route
@app.get("/users/{user_id}")
async def get_user(user_id: int):
    # Async database call
    user = await fetch_user_from_db(user_id)
    return user

# Background task
async def send_notification(email: str, message: str):
    await asyncio.sleep(2)  # Simulate email sending
    print(f"Sent email to {email}: {message}")

@app.post("/orders/")
async def create_order(order_data: dict, background_tasks: BackgroundTasks):
    # Process order synchronously
    order_id = save_order(order_data)

    # Send notification in background
    background_tasks.add_task(
        send_notification,
        order_data['customer_email'],
        f"Order #{order_id} created"
    )

    return {"order_id": order_id}

# aiohttp web server
from aiohttp import web

async def handle_request(request):
    name = request.match_info.get('name', 'Anonymous')
    await asyncio.sleep(1)  # Async operation
    return web.json_response({'message': f'Hello {name}'})

app = web.Application()
app.add_routes([web.get('/{name}', handle_request)])

# WebSocket example
async def websocket_handler(request):
    ws = web.WebSocketResponse()
    await ws.prepare(request)

    async for msg in ws:
        if msg.type == web.WSMsgType.TEXT:
            await ws.send_str(f"Echo: {msg.data}")
        elif msg.type == web.WSMsgType.ERROR:
            print(f'Error: {ws.exception()}')

    return ws

app.add_routes([web.get('/ws', websocket_handler)])

Hands-On Practice

Project 1: Async Web Scraper

Build a concurrent web scraper with rate limiting.

Requirements:

  • Scrape multiple websites concurrently
  • Implement rate limiting
  • Handle errors gracefully
  • Save results to async database
  • Progress tracking
  • Retry failed requests

Key Skills: aiohttp, async I/O, error handling

Project 2: Real-time Chat Server

Create a WebSocket-based chat application.

Requirements:

  • WebSocket server with aiohttp
  • Multiple chat rooms
  • User authentication
  • Message broadcasting
  • Connection management
  • Message history persistence

Key Skills: WebSockets, async server, state management

Project 3: Async Task Queue

Build a distributed task processing system.

Requirements:

  • Task queue with Redis/RabbitMQ
  • Worker pool management
  • Task prioritization
  • Result caching
  • Progress monitoring
  • Graceful shutdown

Key Skills: Message queues, concurrent workers, cleanup

Assessment Criteria

  • Understand async/await semantics
  • Write efficient concurrent code
  • Handle async exceptions properly
  • Use asyncio tasks effectively
  • Build async web applications
  • Debug async code
  • Manage async resources (cleanup)

Resources

Official Documentation

Learning Platforms

Tools

Next Steps

After mastering asyncio, explore:

  • Multiprocessing - CPU-bound parallelism
  • Celery - Distributed task queue
  • gRPC - Async RPC framework
  • Kafka - Async event streaming

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

27.69%
按下载量换算2,093

Antigravity

22.49%
按下载量换算1,700

OpenCode

18.32%
按下载量换算1,385

Gemini CLI

12.83%
按下载量换算970

trae

6.61%
按下载量换算500

Cursor

3.43%
按下载量换算259

安全审计

Gen Agent Trust Hub

通过

Socket

可疑

Snyk

可疑

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。来源字段存在多来源差异,先按来源优先级自动处理,无法消解时进入异常复核队列。

来源信息

继续浏览同类 Skills