我们可以限制 luigi 任务的吞吐量吗?

Can we limit the throughput of a luigi Task?

我们有一个从第三方服务请求一条信息的 Luigi 任务。我们限制了每分钟可以对该 API 呼叫执行的呼叫请求数量。

有没有办法在每个任务的基础上指定调度程序每单位时间 运行 必须执行多少此类任务?

我们在任务中实施了自己的速率限制。我们的 API 限制足够低,我们可以用一个线程来饱和它。当我们收到速率限制响应时,我们只是后退并重试。

您可以做的一件事是将 API 调用声明为 resource. You can set how many of the resource is available in the config, and then how many of the resource the task consumes as a property on the task。这将限制您一次只能完成 运行 n 项任务。

在配置中:

[resources]
api=1

在任务代码中:

resources = {"api": 1}