Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/ fund Public

🤡 Tornado脚手架,🤖 技术栈:Tornado + MySQL + MongoDB + Redis + Celery + Nginx + Supervisor

License

Notifications You must be signed in to change notification settings

lyonyang/fund

Repository files navigation

后续做业务分层和优化以及微服务拆分

tornado

介绍

一个基金管理系统 , 基于 Tornado , 构建一个成熟的 Tornado 脚手架

技术栈 : Tornado + MySQL + MongoDB + Redis + Celery + Nginx + Supervisor

联系我一起交流 , QQ : 547903993 , QQ群 : 590092348

维护

脚手架

  • Tornado 封装 : 配置 , 日志 , API
  • MySQL 异步化 : Peewee + Peewee-async
  • MongoDB 异步化 : mongoengine + motor
  • Redis 异步化 : aioredis
  • Celery 支持 , 异步任务与定时任务
  • Supervisor 部署
  • 详细请求日志
  • API监控
  • ES 全文搜索
  • Docker
  • 考虑 executor 提升为类属性

基金功能

  • 登录 , 注册
  • 基金交易记录
  • 基金实时数据监控 , 收益计算
  • 自选基金
  • 基金排行
  • 基金实时交易模拟

项目结构

fund
├── api
│ ├── fund 基金相关API
│ ├── users 用户相关API
│ └── status 状态码
├── apps
│ ├── fund 基金相关Model
│ └── users 用户相关Model
├── base Tornado App 封装
│ └── db 数据库等异步化
├── cache 缓存相关
├── celerys Celery相关
│ ├── crontabs 定时任务
│ ├── tasks 异步任务
│ └── server Celery入口
├── deploy 部署相关文件
├── docs API文档相关
├── document 脚手架设计参考
├── lib 库 
├── script 项目相关脚本
├── utils 工具包
├── build.py 打包加密脚本
├── config.py 配置文件
├── manage.py 数据库迁移相关
└── run.py 项目启动文件

开始

切换到项目根目录

启动

$ python run.py

记得配置好数据库相关配置, 以及数据表迁移哟~

# Linux 后台启动
$ nohup python3 run.py > run.log 2>&1 &

Celery

# 先启动 Celery Beat
$ celery beat -A celerys.server --loglevel=info
# 后启动 Celery Worker
$ celery worker -A celerys.server --loglevel=info

Nginx

启动

$ /usr/local/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

重启

$ /usr/local/sbin/nginx -s reload

Supervisor

启动 Supervisor

$ supervisord -c /mydata/projects/fund/deploy/supervisor/default.conf

启动 Tornado 服务组

$ supervisorctl start fund

重启 Tornado 服务组

$ supervisorctl restart fund

依赖维护

安装 pipreqs

$ pip install pipreqs

更新 requirements.txt

$ pipreqs . --force

使用说明

load_config

config 为一个全局配置变量 , 在调用 load_config 时被初始化 , 您可以自行优化 , 如类似 Flask 构建一个全局上下文栈等方式优化

make_app

创建应用首要的是加载 config.py , 随后会加载整个 INSTALL_HANDLERS , 即你的接口 , 来完成路由注册 , 以及文档构建

Docs

docs 目录是核心 , 它提供了 define_api 装饰器 , 来帮你构建路由和文档 , 以及对原始 Tornado.web.RequestHandler 的封装

其中包括了 executor , 中间件 , 日志 , 异常捕捉 , Web API 文档等

关于中间件

这里是基于 Tornado 中的 prepare 以及 on_finish 来实现的 , 所以这样的中间件可能不是你所希望的 , 因为 on_finish 不应该接受一个 Awaitable 对象 , 如果我们使用 IOLoop 中的 add_callback , 虽然它可以加入到事件循环 , 但是它并不是我们想要的 "洋葱"

所以后续可能会考虑在 define_api 基础之上 , 去实现一个真正 "洋葱" 的中间件

致谢

最后 , 欢迎和我一起交流 , 无论是更好的想法 , 还是一些存在的问题 , 我都非常乐意去做得更好 ~

About

🤡 Tornado脚手架,🤖 技术栈:Tornado + MySQL + MongoDB + Redis + Celery + Nginx + Supervisor

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /