工作流
预定工作流
动态工作流
根据具体的需求和场景选择合适的工作流引擎进行使用
Dagster
生态 和材料科学的有些类似的两个库
Prefect
Prefect 是一种新的工作流管理系统
动态工作流程:Prefect 允许用户创建可以基于输入数据或条件进行更改的动态工作流程
Prefect is a workflow orchestration framework for building resilient data pipelines in Python.
Flow用来承载业务逻辑,帮助用户与流程进行交互和写作的一个容器。使用@flow装饰器表示方法
Tasks Results States
Task Runners
方式一: Prefect Cloud,申请账号
方式二: 自己建立Prefect server 和前端UI
可以通过Prefect UI或者代码中的日志记录来监控任务的执行状态
一个用于编排和管理工作流的开源后端服务,主要由 Prefect Server 和 Prefect UI 组成。此本地服务将工作流元数据存储在 Postgres 数据库中并暴露 GraphQL API进行访问
项目管理软件
任务流管理和项目管理不一样,有类似,可以了解并区分一下
Worktile
异步工作流:
Celery 是一个分布式任务队列框架,适用于异步任务处理和分布式任务调度。
它使用Python作为主要开发语言,支持多种消息中间件和结果存储后端,同时集成了诸如RabbitMQ、Redis等流行的消息中间件。
Celery具有良好的扩展性和可靠性,可以轻松地处理大规模的并发任务
只需要处理异步任务而不需要复杂的工作流程编排,那么Celery可能是个不错的选择
Celery是一款强大的Python分布式任务队列框架,可用于处理异步任务
supervisor托管监控celery-woker
Celery的基本概念:
任务(Tasks):表示异步执行的工作单元,是你定义的函数。
任务队列(Queue):任务被发到队列中,等待被Worker执行。
Worker:是运行在服务器上的进程,负责执行队列中的任务。
Broker:消息代理,是一个中间件,用于接收发送给它的消息并将它们转发给相应的Worker。
Backend:存储任务执行结果的地方,可以是数据库、缓存系统等
Web中的
使用FastAPI框架构建高效的异步任务应用
FastAPI使用异步处理请求,利用异步任务来提升应用的响应速度和吞吐量
使用sanic 构建
示例
Prefect 提供了开源的 server 以及 UI 来编排工作流
from prefect import task, Flow, Parameter