We run a order fulfillment service and have occassions were we have bursts of API calls that can result in 429 error. For example: shipping a batch of orders, updating inventory levels, etc.
It's a huge bummer when we encounter this error, because it means something that was supposed to get updated in the merchant's Shopify store does *not* get updated - whether it's the status of an order, or inventory level updates. This is a big problem.
Merchant's will come to use asking - "why hasn't this order shipped?", or, "we oversold this product, because you guys didn't update our inventory levels correctly!". It creates unnecessary drama that we can live without.
Our platform is implemented with Django / Python. Do you have any recommendations for a message queue service that takes an API call, stores it, and only deletes it after the API call call has gone through succesfully? It should also execute the API calls in the sequence they were generated in. Or do you have any other recommendations for improving the deliverability of API calls to Shopify? How are larger partners handling this problem?
(Please don't recommend using time.sleep() - this is the wrong answer for so many reasons)