工作流-workflow_Dagster or Prefect介绍

工作流

 预定工作流
 动态工作流
 根据具体的需求和场景选择合适的工作流引擎进行使用

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
posted @ 2024-07-14 23:31  辰令  阅读(408)  评论(0)    收藏  举报