Browse Source

【第一版开发】

1.修改目录结构
2.增加docker构建配置
3.增加docker-compose配置
4.增加项目依赖requirement
5.增加打包配置setup
6.增加README文件
ChenYL 9 months ago
parent
commit
df5a7ea674

+ 14 - 0
Dockerfile

@@ -0,0 +1,14 @@
+# 使用精简镜像,镜像体积从 1.2G 下降为约 400M,提高启动效率,同时升级到 Python 3.13.x 提高 20% 以上性能
+FROM python:3.13-slim-bullseye
+
+# 设置工作目录
+WORKDIR /app
+
+# 复制 requirements.txt 文件到工作目录
+COPY requirements.txt .
+
+# 升级 pip 到最新版
+RUN pip install pip --no-cache-dir -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com --upgrade
+
+# 根据requirements.txt 安装依赖
+RUN pip install --no-cache-dir -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com --upgrade

+ 92 - 0
README.md

@@ -0,0 +1,92 @@
+# 数易得-AK服务器
+
+获取新股、新债数据的服务接口
+
+
+
+## 项目来源
+
+本项目的代码均来源于[AKShare](https://akshare.akfamily.xyz/)项目和[AKTools](https://aktools.akfamily.xyz/)项目,因为只需要使用部分功能,因此提取了部分代码。
+
+获取新股、新债数据的代码来源于[AKShare](https://akshare.akfamily.xyz/),并进行了部分修改。
+
+服务运行的代码来源于[AKTools](https://aktools.akfamily.xyz/)。
+
+| 操作码                | 作用         |
+| --------------------- | ------------ |
+| bond_cov_issue_cninfo | 获取新债数据 |
+| stock_xgsglb_em       | 获取新股数据 |
+
+
+
+## 开发环境配置
+
+1. 创建conda开发环境,这里指定名称为akserver可以复用代码中的vscode配置
+
+   ```shell
+   conda create --name akserver python=3.13
+   ```
+
+2. 安装依赖包,使用国内源加速
+
+   ```shell
+   pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
+   ```
+
+
+
+## 导出依赖配置
+
+根据项目代码导出所需的依赖包(没使用的不会导出),默认生成requirements.txt文件,在根目录执行即可
+
+```shell
+pipreqs --encoding utf-8
+```
+
+
+
+## 项目打包
+
+项目开发完成,进行打包分发
+
+1. 在项目根目录下执行打包命令,打包为whl文件,生成位置:dist目录下
+
+   ```shell
+   python setup.py bdist_wheel
+   ```
+
+   注:whl文件名是按格式生成的,无法修改
+
+2. 构建镜像,要把requirements.txt文件放到当前目录下
+
+   ```shell
+   docker build . -t akserver:latest
+   ```
+
+3. 最后把whl文件、docker-compose.yaml文件放到自定义目录下,然后启动镜像(后台启动)
+
+   ```shell
+   docker-compose up -d
+   ```
+
+4. 如果在arm环境下,调用新债接口可能会报错,原因是缺少了文件libmini_racer.glibc.so,因此需要手动把缺少的文件放到对应的位置
+
+   ```shell
+   RuntimeError: Native library not available at /usr/local/lib/python3.13/site-packages/py_mini_racer/libmini_racer.glibc.so
+   ```
+
+   注:根目录中已有libmini_racer.glibc.so文件
+
+
+
+## 测试接口
+
+* 服务启动接口
+
+  http://localhost:8000
+
+* 新股接口
+  http://localhost:8000/api/public/stock_xgsglb_em?symbol=全部股票
+
+* 新债接口
+  http://localhost:8000/api/public/bond_cov_issue_cninfo?start_date=20250101&end_date=20250131

+ 0 - 0
src/__init__.py → akserver/__init__.py


+ 0 - 0
src/ak/__init__.py → akserver/ak/__init__.py


+ 0 - 0
src/ak/core/__init__.py → akserver/ak/core/__init__.py


+ 0 - 0
src/ak/core/bond_issue_cninfo.py → akserver/ak/core/bond_issue_cninfo.py


+ 0 - 0
src/ak/core/stock_dxsyl_em.py → akserver/ak/core/stock_dxsyl_em.py


+ 0 - 0
src/ak/data/__init__.py → akserver/ak/data/__init__.py


+ 0 - 0
src/ak/data/cninfo.js → akserver/ak/data/cninfo.js


+ 0 - 0
src/ak/data/crypto_info.zip → akserver/ak/data/crypto_info.zip


+ 0 - 0
src/ak/data/ths.js → akserver/ak/data/ths.js


+ 0 - 0
src/ak/datasets.py → akserver/ak/datasets.py


+ 0 - 0
src/ak/exceptions.py → akserver/ak/exceptions.py


+ 0 - 0
src/ak/request.py → akserver/ak/request.py


+ 0 - 0
src/ak/utils/__init__.py → akserver/ak/utils/__init__.py


+ 0 - 0
src/ak/utils/context.py → akserver/ak/utils/context.py


+ 0 - 0
src/api.py → akserver/api.py


+ 0 - 0
src/main.py → akserver/main.py


+ 15 - 0
docker-compose.yaml

@@ -0,0 +1,15 @@
+services:
+  akserver:
+    image: akserver:latest
+    container_name: akserver
+    ports:
+      - 8000:8000
+    volumes:
+      - /root/akserver:/app/akserver
+      - /root/akserver/logs:/usr/local/lib/python3.13/site-packages/akserver/logs
+    environment:
+      - TZ=Asia/Shanghai
+    entrypoint: [ "sh", "-c", "pip install /app/akserver/akserver-1.0.0-py3-none-any.whl && cd /usr/local/lib/python3.13/site-packages/akserver && gunicorn --bind 0.0.0.0:8000 main:app -k uvicorn.workers.UvicornWorker" ]
+    stdin_open: true
+    tty: true
+    restart: always

BIN
libmini_racer.glibc.so


+ 6 - 0
requirements-dev.txt

@@ -0,0 +1,6 @@
+fastapi==0.115.8
+pandas==2.2.3
+py_mini_racer==0.6.0
+Requests==2.32.3
+uvicorn==0.34.0
+pipreqs==0.4.13

+ 6 - 0
requirements.txt

@@ -0,0 +1,6 @@
+fastapi==0.115.8
+pandas==2.2.3
+py_mini_racer==0.6.0
+Requests==2.32.3
+uvicorn==0.34.0
+gunicorn==23.0.0

+ 23 - 0
setup.py

@@ -0,0 +1,23 @@
+# -*- coding:utf-8 -*-
+# !/usr/bin/env python
+"""
+Date: 2025/2/27 14:32
+Desc: 打包配置
+"""
+
+from setuptools import setup, find_packages
+
+setup(
+    name="akserver",  # 包名
+    version="1.0.0",  # 版本号
+    packages=find_packages(),  # 自动查找项目中的包
+    install_requires=[  # 依赖列表
+        "fastapi==0.115.8",
+        "pandas==2.2.3",
+        "py_mini_racer==0.6.0",
+        "Requests==2.32.3",
+        "uvicorn==0.34.0"
+    ],
+    package_data={"": ["*.py", "*.json", "*.pk", "*.js", "*.zip"]},
+    python_requires=">=3.13",  # 支持的 Python 版本
+)