平台功能大体如下:
- 支持非框架的Python项目,且保留框架项目的接口。
- 与Scrapyd类似的项目部署功能。
- 项目异常监控和通知功能。
- 用户注册和登录。
- 权限管理。
- 动态添加或删除定时任务。
- 项目调度记录展示。
- 项目运行日志的收集和展示。
Sailboat的模块规划和技术选型
大致的模块如下:
- 具有高兼容性的调度器模块。
- 能够对EGG文件增/删/改/查的模块。
- 负责监控程序异常的模块。
- 能够对日志文件增/删/改/查的模块。
- 权限管理模块。
- 开放给用户部署项目的API。
- 开放给用户调度项目的API。
- 用于展示数据的API。
- 用户注册和登录的API。
- 漂亮的前端界面。
基于Python语言的Web框架很多,较为知名的有Django,Flask和Tornado。考虑到项目不大并且定制程度较高,这里使用Flask作为Sailboat的基础框架。
在数据库方面,MySQL、MongoDB和SQLite都是非常热门的数据库,这里选择爬虫工程师常用的MongoDB来存储Sailboat产生的数据,与之对应的连接库为PyMongo。
后端开发过程中用到的库安装命令如下:
目录结构:
其中,handler、components和executor都是Python Package,handler将用于存放与视图相关的代码,components将用于存放Sailboat的一些功能性组件,executor将用于存放执行器,一些常量会在settings.py中定义,connect.py用于连接MongoDB数据库,common.py用于存放一些公共对象,server.py则是整个Sailboat项目的服务启动器。
以上是项目的简单说明和基础准备,下一节将为项目设计数据模型。