首页 > 解决方案 > Prefect 如何同时扩展数千个工作流?

问题描述

我有一个在本地运行的完美服务器(0.13 核心版本)。我在具有 64 GB RAM 和 32 个 CPU 核心的服务器机器上循环调用 flow.run() 100 万次。当它运行到大约 300 次时,它开始从 GraphQL 抛出连接拒绝错误。

我仍在考虑是否在我的工作流程中使用 Prefect,但看起来它占用了太多 RAM。Prefect 如何同时扩展数千个工作流?

我用一个简单的例子运行工作流程:

176 from flask import Flask
177 app = Flask(__name__)
178
179 import prefect
180 client = prefect.Client()
181
182 @app.route('/')
183 def hello_world():
184     client.create_flow_run("032275d0-6c31-4dc5-bf32-5b2afadbe531")
185     return 'Hello, World!'

然后我调用 REST API 来触发从 1 到 1000 的流。

for i in {1..1000}; do curl localhost:5000/; done

我知道 GraphQL 正在使用大量内存(最多 10 GB RAM)。然后 Prefect UI 开始徘徊在 100 左右。

我不确定我是否将 Prefect 工作流程用作其预期用途,但如果可能的话,我想解决这个问题。

标签: prefect

解决方案


开源 Prefect Server 并不是为这种规模而设计的。正如这个新文档中所描述的,这是人们迁移到 Prefect Cloud 的原因之一,它是为规模和性能而设计的。


推荐阅读