Announcements
Do you have an idea for Dropbox Paper? Share it with us!

HTTP API Throttling?

Explorer | Level 3

Hi, I am using the http API to upload files into my account, however >50% of them fail and I suspect it is because I can have up to 20 parallel processes trying to upload in a window of about 5 seconds.

 

Error message: 

{"error_summary": "too_many_write_operations/", "error": {"reason": {".tag": "too_many_write_operations"}}}



Is there a rate limit documented somewhere so I can ensure 100% upload? I understand there is a 1 million API calls/month limit which I won't even get remotely close to. We want to upload files in this manner maybe 2-4 times a month.

Here is the upload php code.

 

$accessToken = "xxxxxxxxxxxx";
$path = $_POST['fileName'];
$fp = fopen($path, 'rb');
$size = filesize($path);

$cheaders = array('Authorization: Bearer '. $accessToken,
                  'Content-Type: application/octet-stream',
                  'Dropbox-API-Arg: {"path":"/images/'.$path.'", "mode":"add"}');

$ch = curl_init('https://content.dropboxapi.com/2/files/upload');
curl_setopt($ch, CURLOPT_HTTPHEADER, $cheaders);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, $size);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

curl_close($ch);
fclose($fp);

 

3 Replies

Re: HTTP API Throttling?

Dropboxer

This can happen when attempting to upload multiple files at once. The 'too_many_write_operations' error indicates "lock contention". That's not explicit rate limiting, but rather a result of how Dropbox works on the backend. This is a technical inability to make a modification in the account or shared folder at the time of the API call. This error indicates that there was simultaneous activity in the account or shared folder preventing your app from making the state-modifying call (e.g., adding, editing, moving, or deleting files/folders) it is attempting. The simultaneous activity could be coming from your app itself (as in this case when uploading multiple files in parralel), or elsewhere, e.g., from the user's desktop client. It can come from the same user, or another member of a shared folder. You can find more information about lock contention here:

https://www.dropbox.com/developers/reference/data-ingress-guide

In short, to avoid this error, you should avoid making multiple concurrent state modifications. E.g., don't issue multiple such requests at a time, and use batch endpoints whenever possible. That won't guarantee that you won't run in to this error though, as contention can still come from other sources, so you may also want to implement automatic retries in your app.

Reply
Loading...

Re: HTTP API Throttling?

Explorer | Level 3

Thanks Greg.

I'm just now learning Dropbox's API. What are the endpoints for batch upload? Is it the upload_session EP? If there are some code samples, that would be great. Thanks.

Reply
Loading...

Re: HTTP API Throttling?

Dropboxer
Reply
Loading...
API Support

Have a question? Our Dropbox Community is here to help you find an answer!
You won’t have to wait too long for a reply, but why not learn more about the Community while you’re here.

Not the right discussion for you? Find out what else our Community has to say about API Support.

Or, search our Help Center for even more.

Who's talking
Top contributors to this post