python工作任务流flow实时框架:prefect

python工作任务流flow实时框架:prefect

prefect是一个python的工作任务流调度实时框架,prefect可以快速构建平台系统复杂模块间工作流的监测。当平台系统模块之间的调用链越来越复杂时候,任务执行起来,已经很难盘点清楚程序逻辑和工作流运转的路线图。prefect通过简单的@注解,即可清晰在线、实时的梳理清楚系统运行“思维导图”。

prefect是github的开源项目:

GitHub - PrefectHQ/prefect: The easiest way to coordinate your dataflowThe easiest way to coordinate your dataflow. Contribute to PrefectHQ/prefect development by creating an account on GitHub.https://github.com/PrefectHQ/prefect

安装:

pip install -U prefect

工作任务流例子

@flow可以嵌套使用,@flow里面可以调用@task的任务。但@task不能反过调用@flow,原则上尽量使用@flow,@task是程序代码的最小原子单位。

import time

from prefect import flow, task, get_run_logger


@task(retries=2, retry_delay_seconds=30)
def failure():
    print('running')
    raise Exception('异常')


@flow(name="my_flow_b", timeout_seconds=15)
def flowb(param: str):
    time.sleep(20)
    return 'OKb'


@flow(name="my_flow_a")
def flowa(param: str):
    time.sleep(15)

    failure.submit()

    return 'OKa'


@flow(name="my_flow_2", description='第二个工作流')
def flow2():
    logger = get_run_logger()
    logger.info('启动flow2')
    time.sleep(3)
    flowb('start b')
    return 'OK2'


@flow(name="my_flow_1", description='第一个工作流')
def flow1():
    logger = get_run_logger()
    logger.info('启动flow1')
    time.sleep(2)
    flowa('start a')
    return 'OK1'


if __name__ == '__main__':
    flow1()
    flow2()

程序运行后,在控制台使用命令启动prefect服务器端:

prefect orion start

默认prefect启动在http://127.0.0.1:4200,浏览器打开:

查看flow1运行时日志:

flowa中的实时log日志:

flowb的启动参数

prefect的配置管理和设置

可以在控制台查看prefect的配置项:

prefect config view

默认的prefect启动端口在4200,用户通过127.0.0.1:4200访问,可以通过配置设置新的启动端口:

prefect config set PREFECT_ORION_API_PORT=1234

指定prefect启动在1234端口。

 然后重启服务器即可:

prefect orion start

prefect的API开发文档

prefect的后端服务器也可以通过REST API访问调用。prefect的文档可以直接查看:
http://127.0.0.1:4200/docs


http://127.0.0.1:4200/redoc 


 

以上效果均在Windows环境下跑出来。prefect有更多的功能,值得研究和使用。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Python实现工作,通常需要使用相应的工作框架或库。以下是一些常用的工作框架或库: 1. Apache Airflow:这是一个基于Python工作管理工具,可以用于调度、监控和维护复杂的工作。 2. Prefect:一个用于构建工作的现代Python库,它提供了一个可编程的、声明性的API,可以用于定义、运行和监控工作。 3. Luigi:一个轻量级的Python工作框架,它提供了一个简单的API,可以用于定义和运行工作。 使用这些工作框架或库,可以通过Python编写自定义任务程和依赖关系,以及自动化处理和部署工作。例如,使用Apache Airflow,可以通过以下代码定义一个简单的工作: ``` from airflow import DAG from airflow.operators.bash_operator import BashOperator from datetime import datetime, timedelta default_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': datetime(2021, 1, 1), 'email': ['airflow@example.com'], 'email_on_failure': False, 'email_on_retry': False, 'retries': 1, 'retry_delay': timedelta(minutes=5), } dag = DAG( 'my_dag', default_args=default_args, description='A simple tutorial DAG', schedule_interval=timedelta(days=1), ) t1 = BashOperator( task_id='print_date', bash_command='date', dag=dag, ) t2 = BashOperator( task_id='sleep', bash_command='sleep 5', retries=3, dag=dag, ) t1 >> t2 ``` 这个代码片段定义了一个名为“my_dag”的工作,其中包含两个任务:一个打印日期,一个休眠5秒。这些任务由BashOperator运行,并且t2任务具有重试逻辑。任务之间的依赖关系由“>>”操作符定义。您可以使用类似的代码定义和运行自定义工作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值