惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
博客园 - 叶小钗
F
Fortinet All Blogs
GbyAI
GbyAI
Martin Fowler
Martin Fowler
博客园 - 聂微东
I
InfoQ
B
Blog
IT之家
IT之家
美团技术团队
L
LangChain Blog
小众软件
小众软件
C
Check Point Blog
MongoDB | Blog
MongoDB | Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
Last Week in AI
Last Week in AI
A
About on SuperTechFans
博客园 - Franky
P
Proofpoint News Feed
罗磊的独立博客
月光博客
月光博客
V
Visual Studio Blog
MyScale Blog
MyScale Blog

博客园 - 尘恍若梦

制造业五大模式解析:OEM、ODM、OBM、JDM、CMT 前端问题点 MCP 博文阅读密码验证 - 博客园 中台规划方法论 中台建设 欧盟无障碍法案(European Accessibility Act, EAA) DeepSeek给我的数据清洗方案 云WAF和云防火墙 AI编程:Cursor 网关与授权 Shopify SQL语句常用用法记录 Vivien学架构 账号中心 Server之SLA Python语法 pandas 基础3 域名解析
Python工程化
尘恍若梦 · 2024-10-30 · via 博客园 - 尘恍若梦

一、工程化背景说明

之前一直是用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 的异步任务系统。