Как обработать ограничение скорости вызовов API-интерфейса администратора shopify в приложении django

У меня есть приложение shopify, построенное на django app с некоторыми рабочими celery, каждый рабочий может отправлять много запросов к shopify и типы запросов имеют несколько приоритетов в моем приложении, теперь я хочу построить общую очередь приоритетов между рабочими для каждого магазина, чтобы обработать ограничение скорости shopify и приоритет:

Рабочий-целевик 1:

import shopify 
import time

# update more than 1000 of variants 
for variantId in variantIds:
    time.sleep(0.5)
    with shopify_session(store.domain, store.token):
        shopifyVariant = shopify.Variant.find(variantId)
        # here some cahnges on variant
        shopifyVariant.save()

celery worker 2:

import shopify 
import time

# update store info
for store in stores:
    time.sleep(0.5)
    with shopify_session(store.domain, store.token):
        shopInfo = shopify.Shop.current()
        # update shop info in app database

web-приложение:

class TagList(APIView):
    @generate_shopify_session
    def get(self, request):
        try:
            data = ShopifyGraphQl().tags()
        except BaseException as err:
            return JsonResponse({"message": str(err), 'success': False})
        return JsonResponse({"data": data, "success": True})

Вот несколько примеров вызовов api в моем приложении, которые могут быть вызваны за одну секунду, и shopify ответит кодом состояния 429 too many request

Какая лучшая архитектура для реализации очередей и обработки ограничения скорости shopify?

Вернуться на верх