Как предотвратить проблему удушения с работниками сельдерея? - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу создать скрипт для извлечения данных из Amazon API, интересная вещь в Amazon API, что они имеют строгие правила регулирования по различным конечным точкам, например:

Maximum request: quota 30 requests  
Restore rate: One request every two seconds
Hourly request quota: 1800 requests per hour

Таким образом, для одной учетной записи мы можем сделать 30 запросов за один раз без дросселирования, но не более 1800 в час. Скорость восстановления означает, что после того, как мы выполнили 30 запросов одновременно, нам нужно подождать 60 секунд (2 секунды * 30 запросов), чтобы сделать снова 30 запросов одновременно.
Сначала я хотел реализовать это с помощью сельдерея, но в этом случае нужно использовать глобальные шкафчики, что кажется не лучшим решением и сложным в обслуживании. В nodejs мирах мы можем использовать что-то вроде https://www.npmjs.com/package/bottleneck.

const limiter = new Bottleneck({ maxConcurrent: 1, minTime: 333 }); limiter.schedule(() => myFunction(arg1, arg2)) .then((result) => { /* handle result */ }); Любые похожие библиотеки в python, или, может быть, просто хорошее предложение, как это реализовать, с возможностью отслеживать и перепланировать в случае сбоя.

...