【发布时间】:2017-05-02 09:51:09
【问题描述】:
我们有一个 Luigi 任务,它向第三方服务请求一条信息。我们每分钟可以对该 API 调用执行的调用请求数受到限制。
有没有办法在每个任务的基础上指定调度程序每单位时间必须运行多少此类任务?
【问题讨论】:
我们有一个 Luigi 任务,它向第三方服务请求一条信息。我们每分钟可以对该 API 调用执行的调用请求数受到限制。
有没有办法在每个任务的基础上指定调度程序每单位时间必须运行多少此类任务?
【问题讨论】:
我们在任务中实现了自己的速率限制。我们的 API 限制足够低,以至于我们可以用单个线程将其饱和。当我们收到速率限制响应时,我们只是退出并重试。
您可以做的一件事是将 API 调用声明为 resource。您可以在配置中设置有多少资源可用,然后将任务消耗多少资源作为property on the task。然后,这将限制您一次运行 n 个该任务。
在配置中:
[resources]
api=1
在任务代码中:
resources = {"api": 1}
【讨论】: