Skip to main content

If it does, how does Acumatica throttle its use of the API? Will it use all available resources in the Shopify's “Leaky Bucket” or is this adjustable?

Yes, our connector is based on Shopify API rate limits to access API data(for standard plan 2 calls/second, for Shopify plus plan 4 calls/second)

Based on Shopify's documentation, initialized Leaky Bucket is 40(Shopify plus is 80), and we are using Semaphore pattern to control API rate.

  1. Initialized Leaky Bucket as 40, initialize a Timer to release 2 calls per second, Timer will auto refill the Bucket.
  2. All API requests are waiting in a queue
  3. If current Bucket available calls greater than 0, allow sending API to Shopify; Otherwise system will put API requests on hold and wait for the Bucket available calls update(1. Based on another API response and Timer)
  4. Based on each API response result, update Bucket available calls and Bucket's capacity
  5. If system allows sending API to Shopify but Shopify reports the Bucket size is exceeded, system will wait for 0.5 second and re-try, the default attempt times is 1000, but user can change it in Web.Config file.
  6. If API token is shared with another system, our system will not be enable to get correct available calls info and it will have above issue.

Reply