Как обработать ограничение скорости вызовов 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?