Python工程化

一、工程化背景说明

之前一直是用python脚本处理数据,现在计划转到python工程上面来了。

 

https://pyloong.github.io/pythonic-project-guidelines/quick_start/

Flask + Celery    APScheduler +Pandas +SQLAlchemy
   
 
 
 

二、Flask

$ export FLASK_APP=hello.py
$ flask run

//或
$ export FLASK_APP=hello.py
$ python -m flask run

 

三、APScheduler

3.1 python中常用的定时任务主要有以下8中方法:

  1. while True:+sleep()
  2. threading.Timer定时器
  3. Timeloop库执行定时任务
  4. 调度模块sched
  5. 调度模块schedule
  6. 任务框架APScheduler
  7. 分布式消息系统celery执行定时任务
  8. 使用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

方法一、
1、生成requirements
pip freeze > requirements.txt
2、安装requirements.txt依赖
pip install -r requirements.txt
方法二、(推荐使用)
# 安装
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 的异步任务系统。

posted @ 2024-10-30 21:56  尘恍若梦  阅读(6)  评论(0编辑  收藏  举报