Hollis[实战课程]大模型应用开发实战

Python全套实战项目:从脚本小子到系统构建者

7个项目,覆盖爬虫、Web、数据、自动化、AI、运维、架构

项目一:命令行工具集 —— 告别“临时脚本”

项目描述

把你日常工作中频繁手写的临时Python脚本,封装成一个统一、优雅、带帮助信息的命令行工具集——用 argparseclick 库实现。

功能设计

bash

你的工具叫 mytools

mytools json pretty data.json # 格式化JSON文件
mytools file split large.log 100 # 拆分大文件(按行数)
mytools time calc “2026-07-01” “2026-12-31” # 计算日期差
mytools net ping 192.168.1.1 -c 5 # 带超时的ping探测
mytools encrypt md5 myfile.txt # 计算文件MD5

技术点

技术 作用
argparse / click 命令行参数解析
setuptools 打包成可安装的pip包
logging 日志输出(支持–verbose)
colorama 终端彩色输出

项目产出

一个发布到PyPI(或公司私有仓库)的pip包,pip install mytools 即可全局使用。

对你已有能力的衔接

✅ 你手写过神经元、RNN、Transformer,封装一个CLI工具对你来说是降维打击。这个项目的价值在于规范化和工程化——让代码可以被他人安装和使用。


项目二:异步爬虫系统 —— 从“请求”到“数据管道”

项目描述

构建一个高并发、可配置、带反爬策略的爬虫系统,目标站点自选(如新闻网站、电商商品信息)。

核心功能

python

配置驱动的爬虫

crawler:
name: “news_crawler”
start_urls:

  • https://example.com/news"
    parse_rules:
    title: “h1.article-title”
    content: “div.article-content”
    time: “span.publish-time”
    output:
    format: “jsonl”
    path: “./data/news/“
    concurrency: 10
    retry: 3
    delay: 1.0

技术点

技术 作用
aiohttp + asyncio 异步HTTP请求(高并发)
BeautifulSoup / lxml HTML解析
fake_useragent 随机User-Agent
tenacity 重试机制
jsonlines 流式存储(每行一个JSON)

进阶扩展

  • 加入 代理池(从免费代理网站抓取、验证、轮换)

  • 加入 增量爬取(只抓取更新内容)

  • 加入 数据清洗(去除HTML标签、归一化日期格式)

项目产出

一个能稳定运行、日抓取10万+页面的爬虫系统,产出结构化数据(JSONL格式)。

与你已有能力的衔接

✅ 你的Go运维开发经验让你对并发、超时、重试有天然敏感度,把Go里的并发思维迁移到Python asyncio会非常丝滑。


项目三:数据清洗与分析流水线 —— 从“脏数据”到“洞察”

项目描述

接项目二的产出(或公开数据集),构建一套 数据清洗→分析→可视化 的完整流水线。

典型工作流

python

数据清洗

raw_data → 去重 → 缺失值处理 → 异常值检测 → 格式统一 → 清洗后数据

数据分析

清洗后数据 → 聚合统计 → 相关性分析 → 趋势检测 → 分析报告

可视化

分析结果 → Matplotlib/Seaborn图表 → 自动化报告(HTML/PDF)

技术点

技术 作用
pandas 数据清洗与变换
numpy 数值计算
matplotlib / seaborn 数据可视化
jinja2 自动化报告模板
weasyprint HTML转PDF

项目产出

一份 自动生成的数据分析报告(含图表+结论),每天定时运行。

与你已有能力的衔接

✅ 你在“多模态大模型”中处理过图像数据,在“手写大模型”中处理过文本数据——数据预处理对你来说已是老朋友。这个项目让你把数据处理能力体系化、自动化


项目四:FastAPI后端服务 —— 从“脚本”到“API”

项目描述

用FastAPI构建一个 完整的RESTful API服务,将项目二/三的能力封装为服务接口。

API设计

yaml

用户认证

POST /api/auth/login → JWT Token
POST /api/auth/refresh → 刷新Token

爬虫任务管理(结合项目二)

POST /api/crawler/start → 启动爬虫任务(异步执行)
GET /api/crawler/status/{task_id} → 查询任务状态
GET /api/crawler/data/{task_id} → 获取爬取结果

数据分析(结合项目三)

POST /api/analysis/run → 运行分析流水线
GET /api/analysis/report/{run_id} → 获取分析报告

系统

GET /health → 健康检查
GET /metrics → Prometheus指标

技术点

技术 作用
FastAPI Web框架(自动生成OpenAPI文档)
Pydantic 数据校验(类型安全)
SQLAlchemy / asyncpg 异步数据库ORM
Celery / RQ 异步任务队列(爬虫等耗时任务)
JWT 用户认证
Docker + docker-compose 容器化部署

数据库设计

sql

– 用户表
users (id, username, password_hash, email, created_at)

– 爬虫任务表
crawler_tasks (id, name, status, config, result_path, created_at, finished_at)

– 分析任务表
analysis_tasks (id, name, status, input_path, report_path, created_at, finished_at)

– 审计日志
audit_logs (id, user_id, action, timestamp, ip)

项目产出

一个 容器化部署的FastAPI后端服务,提供爬虫启动、数据查询、分析触发等API能力。

与你已有能力的衔接

✅ 你已经在Go中做过运维开发,对“写API服务”这件事非常熟悉。这个项目让你把同样的工程思维迁移到Python生态,同时用上FastAPI的异步能力和自动文档生成。


项目五:监控告警系统 —— 运维能力的Python实现

项目描述

用Python实现一套 轻量级监控告警系统,覆盖服务器、应用、业务三个维度——这正是你在Go运维开发中做过的,现在用Python再做一遍,形成双语言能力。

核心模块

模块 功能 技术
采集器 采集系统指标(CPU/内存/磁盘)和业务指标 psutil、自定义业务埋点
存储 时序数据存储 InfluxDB / Prometheus(远端)
检测引擎 规则判断(阈值/趋势/同比) 纯Python实现
告警通知 多渠道通知(邮件/钉钉/企微) smtplib、自定义Webhook
展示看板 简单的Web仪表盘 Streamlit / Grafana(对接)

告警规则示例

yaml

config/alerts.yaml

rules:

  • name: “CPU过载预警”
    metric: “cpu.percent”
    condition: “> 80”
    duration: “5m”
    severity: “warning”
    receivers: [“devops@company.com“]

  • name: “API错误率突增”
    metric: “api.error_rate”
    condition: “> 5%”
    duration: “1m”
    severity: “critical”
    receivers: [“oncall@company.com“]

项目产出

一个 可配置、可扩展的轻量级监控系统,部署后能实时监控指标并在异常时自动告警。

与你已有能力的衔接

✅ 这是你 Go运维开发经验的Python翻版。双语言实现同一类系统,会让你对“运维系统”本身的理解更深刻——你会明白哪些是语言的差异,哪些是架构的共性。


项目六:自动化工作流引擎 —— 从“写脚本”到“编排任务”

项目描述

构建一个 轻量级工作流编排引擎,让用户通过YAML/JSON配置定义任务依赖关系,系统自动调度执行——这是你之前探索的 ComfyUI工作流理念 在Python工程中的落地。

核心概念

yaml

工作流定义

workflow:
name: “daily_etl_pipeline”
schedule: “0 2 * * *” # 每天凌晨2点执行
tasks:

  • id: “extract”
    type: “python_script”
    script: “extract_data.py”
    retry: 3

  • id: “transform”
    type: “python_script”
    script: “transform_data.py”
    depends_on: [“extract”] # 依赖上一任务
    retry: 2

  • id: “load”
    type: “http_request”
    url: “http://data-api/load"
    method: “POST”
    depends_on: [“transform”]
    timeout: 300

  • id: “report”
    type: “send_email”
    depends_on: [“load”]
    config:
    to: [“team@company.com“]
    subject: “ETL执行完成”

技术点

技术 作用
DAG(有向无环图) 任务依赖关系建模
拓扑排序 确定任务执行顺序
状态持久化 记录每个任务状态(待执行/运行中/成功/失败)
WebHook 支持外部系统触发工作流
APScheduler 定时调度

项目产出

一个 可定义、可调度、可追踪的轻量级工作流引擎

与你已有能力的衔接

✅ 这是你 ComfyUI节点编排思维 + Go运维调度经验 + Python工程能力 的三重交汇。做这个项目,你会发现自己已经具备“系统架构师”的思维方式了。


项目七:API网关与统一鉴权服务 —— 微服务入口

项目描述

基于FastAPI + Redis + JWT,构建一个 轻量级API网关,统一管理所有后端服务的路由、鉴权、限流和日志。

核心功能

功能 实现方式
动态路由 配置驱动,支持路径前缀转发
统一鉴权 JWT Token验证 + RBAC权限控制
限流熔断 令牌桶算法(redis + slowapi
请求日志 全链路记录(request_id贯穿)
服务发现 简单版:配置文件 + 健康检查

配置示例

yaml

gateway/config.yaml

routes:

auth:
jwt_secret: “${JWT_SECRET}”
token_expire: 3600

项目产出

一个 可插拔的轻量级API网关,能统一管理多个后端服务的流量入口。

与你已有能力的衔接

✅ 这是你 Go运维开发中服务治理能力的Python实现。你会在Go和Python之间建立“架构思维”的桥梁——两种语言,同一套系统设计哲学。


项目全景图:7个项目的关系与递进

text

项目一(CLI工具集)
↓ 提升工程化规范
项目二(异步爬虫系统)
↓ 产出数据
项目三(数据分析流水线)
↓ 能力封装
项目四(FastAPI后端服务)
↓ 增加运维视角
项目五(监控告警系统)
↓ 增加编排能力
项目六(工作流引擎)
↓ 增加架构能力
项目七(API网关)

每个项目都可以独立使用,组合起来就是一个完整的技术栈作品集。


学习建议与节奏

阶段 时间 项目 重点
基础巩固 2-3周 项目一、二 扎实的Python基本功
数据方向 2-3周 项目三 pandas + 可视化
Web后端 3-4周 项目四 FastAPI + 异步 + Docker
运维/架构 3-4周 项目五、六、七 系统设计 + 综合能力

总计:约3个月完成全部7个项目,每天投入2-3小时。


立即开始:项目一的第一行代码

今天就开始你的第一个项目——CLI工具集

打开你的编辑器,创建第一个命令:

python

mytools/cli.py

import click
import json
import sys
from pathlib import Path

@click.group()
def cli():
“””我的工具箱 - 让日常开发更高效”””
pass

@cli.command()
@click.argument(‘file’, type=click.Path(exists=True))
@click.option(‘–indent’, default=2, help=’缩进空格数’)
def json_pretty(file, indent):
“””格式化JSON文件,使其更易读”””
try:
data = json.loads(Path(file).read_text(encoding=’utf-8’))
print(json.dumps(data, ensure_ascii=False, indent=indent))
except Exception as e:
click.echo(f”❌ 错误: {e}”, err=True)
sys.exit(1)

@cli.command()
@click.argument(‘file’, type=click.Path(exists=True))
def md5(file):
“””计算文件的MD5哈希值”””
import hashlib
hash_md5 = hashlib.md5()
with open(file, “rb”) as f:
for chunk in iter(lambda: f.read(4096), b””):
hash_md5.update(chunk)
click.echo(f”MD5: {hash_md5.hexdigest()}”)

if name == ‘main‘:
cli()

安装依赖后运行

bash

pip install click
python mytools/cli.py json_pretty data.json
python mytools/cli.py md5 myfile.txt

本作品采用《CC 协议》,转载必须注明作者和本文链接
SOU_itazs-fun
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
程序员 @ IT爱知识
文章
1
粉丝
0
喜欢
0
收藏
0
排名:3877
访问:0
私信
所有博文
社区赞助商