Prefect 笔记

Database and Ruby, Python, History


Prefect, not perfect.

安装 Prefect 非常简单,习惯了 Docker 拉起的我,这次是直接本地拉起的,因为需要claude cli 工具,所以直接本地运行了。

uv add prefect

启动 Prefect API server,这个 Server 主要是前端,API 使用,并不会真实地执行你的 flow。

uv run prefect server start

有了 Server,还需要一个干活的,那就是 Worker。但是 Worker 是挂载 Worker Pool 下面的,所以要先创建 worker pool.

NO_PROXY="127.0.0.1,localhost" uv run prefect work-pool create "mattermost-bot-pool" --type process

然后再加入这个 worker pool。

NO_PROXY="127.0.0.1,localhost" uv run prefect worker start --pool "mattermost-bot-pool"

部署准备好的 flow

NO_PROXY="127.0.0.1,localhost" uv run prefect deploy flows/bb_flow.py:bb_pr_review_flow -n "bitbucket_pr_review" -p "mattermost-bot-pool"

在其他地方就可以通过 run_deployment 执行这个 flow 了。

from prefect.deployments import run_deployment

await run_deployment(
    name="BB PR Review Flow/bitbucket_pr_review",
    parameters={
        "repo_name": repo_name,
        "pr_id": pr_id,
        "channel_id": channel_id,
        "post_id": post_id,
        "token": settings.mattermost_bot_token_bb
    },
    timeout=0
)