目录
项目概述
项目基于Python的asyncio和aiohttp异步框架开发,用于实时获取美股行情数据。系统每12秒从指定接口中获取股票的最新价格,并且按分钟统计开盘价,收盘价,最高价,最低价。并自动写入SQL Server数据库。支持多只股票同时监控,具备高并发,低延迟的数据处理能力,为后续量化分析和行情监控系统的构建做进一步的数据支撑。
功能需求
- 实时异步获取指定美股数据
- 每分钟统计高开低收行情数据
- 定时判断是否数据美股交易时间
- 合法数据自动插入SQL Server数据库
- 自动捕获错误,并记录日志
- 支持多只股票定时处理,结构可扩展
系统架构 & 技术栈
架构
模块化设计、由于数据采集函数、数据处理函数、定时调度函数、数据库操作函数组成。通过异步任务实现高并发采集。结合美股交易时段判断是否入库,整体流程高效稳定。
技术栈
- 语言 & 框架:Python 3,采用
asyncio
和aiohttp
实现异步并发请求; - 数据库:SQL Server,通过
pyodbc
驱动连接与操作; - 时间处理:使用
datetime
精准控制数据采集与插入时间; - 异常处理:内置
traceback
捕获错误并写入本地日志,便于排查。
技术栈介绍
asyncio:asyncio
是 Python 内置的异步编程库,用于编写并发代码。本项目利用 asyncio
实现事件循环和协程调度,使多个股票数据请求可以高效并发执行,显著提升了程序的响应速度和资源利用率。
aiohttp:aiohttp
是基于 asyncio
的 HTTP 客户端库,支持异步的 HTTP 请求。在本项目中,aiohttp
被用来异步调用股票数据接口,能够在短时间内同时请求多个股票,适合需要频繁调用网络 API 的场景。
部分代码块
import asyncio
import aiohttp
from datetime import datetime,time
import traceback
import pyodbc
# 数据库连接
def connect_database():
conn = pyodbc.connect(conn_str)
if conn:
print("数据库连接成功")
else:
print("数据库连接失败")
return conn
# 股票数据插入数据库
def operation_sqlserver():
try:
conn = connect_database()
# 将数据插入到数据库中
cursor = conn.cursor()
# 统一拼接 SQL 语句
final_sql = "\n".join(filter(None,all_insert_sql))
cursor.execute(final_sql)
conn.commit()
print("数据插入成功\n")
cursor.close()
conn.close()
all_insert_sql.clear()
except Exception as e:
traceback.print_exc()
cursor.close()
conn.close()
部分代码截图
vscode远程连接服务器调试
数据获取过程