ну да, я к этому варианту тоже склоняюсь.
но тут 2 варианта я вижу:
1. дробить задачи на микрозадачи и запрос к API выносить в отдельную очередь, на которую вешать rate limit, как описано здесь:
https://habr.com/ru/post/494090/. но повторюсь, код будет очень замороченным. но плюс в том - мы можем отдельно масштабировать воркеры, которые делают запросы к API.
2. как вариант, непосредственно перед самим запросом впилить свой token bucket, который будет брать токен и делать запрос. но тогда другие треды будут перед запросом сидеть и ждать свою очередь. в этом случае текущий код тасок останется без изменений, но масштабировать будет сложнее.