Python工程化
一、工程化背景说明
之前一直是用python脚本处理数据,现在计划转到python工程上面来了。
https://pyloong.github.io/pythonic-project-guidelines/quick_start/
二、Flask
$ export FLASK_APP=hello.py $ flask run //或 $ export FLASK_APP=hello.py $ python -m flask run
三、APScheduler
3.1 python中常用的定时任务主要有以下8中方法:
- while True:+sleep()
- threading.Timer定时器
- Timeloop库执行定时任务
- 调度模块sched
- 调度模块schedule
- 任务框架APScheduler
- 分布式消息系统celery执行定时任务
- 使用windows自带的定时任务
3.2 APscheduler
APscheduler全称Advanced Python Scheduler,作用为在指定的时间规则执行指定的作业。
3.3 APscheduler调度器分类:
-
BlockingScheduler : 调用start函数后会阻塞当前线程。当调度器是你应用中唯一要运行的东西时(如上例)使用。
-
BackgroundScheduler : 调用start后主线程不会阻塞。当你不运行任何其他框架时使用,并希望调度器在你应用的后台执行。
-
AsyncIOScheduler : 当你的程序使用了asyncio(一个异步框架)的时候使用
-
GeventScheduler : 当你的程序使用了gevent(高性能的Python并发框架)的时候使用
-
TornadoScheduler : 当你的程序基于Tornado(一个web框架)的时候使用
-
TwistedScheduler : 当你的程序使用了Twisted(一个异步框架)的时候使用
-
QtScheduler : 如果你的应用是一个Qt应用的时候可以使用
一般用BlockingScheduler或BackgroundScheduler。 因为不想阻塞当前线程,这次决定选用APScheduler中的BackgroundScheduler。
四、生成requirements
# 安装 pip install pipreqs # 在当前目录生成 pipreqs . --encoding=utf8 --force pip install -r requirements.txt
方法三、用pycharm生成(推荐)
五、Celey
pip install celery # celery 安装
pip install flower # celery 监控 flower
pip install redis
flower 是 Python 的用于监控 Celery 的库,它可以在 Web 页面实时显示 Celery 任务执行者的状态、任务的状态等。
flower 还提供了 REST API 用于第三方应用直接触发任务执行、获取任务执行结果等,这极大地扩展了 Celery 的应用范围,例如一个 Java应用可以通过 flower 的 REST API 使用 Celery 的异步任务系统。