 <p>We solved this 10 minute timeout problem by implementing a small amount of Javascript which every 9 minutes sends an ajax request to a URL which sends back a new blob upload URL and swaps out the form.</p> <p>The <code>/ajax/blob</code> URL takes a success url, and then calls <code>create_upload_url()</code> and returns it as an ajax data object.</p> <p>Here's the Javascript we wrote:</p> <pre><code>if ($('#blobUploadForm').length &gt; 0) { setTimeout(_getNewBlobstoreUrl, 9 * 1000 * 60 * 60); // 9 minutes } //do nothing if there is no uploadUrl id function _getNewBlobstoreUrl() { var successUrl = $('#uploadUrl').attr('value'); if (typeof successUrl == 'undefined') { return; } var url = "/ajax/blob?url=" + successUrl; $.ajax({ url: url, dataType: "json", cache: false, async: true, success: _getNewBlobstoreUrlSuccess, error: _getNewBlobstoreUrlError }) function _getNewBlobstoreUrlSuccess(data) { if (data.url) { //change the action to a new action $('#blobUploadForm').attr('action', data.url) } } function _getNewBlobstoreUrlError(err) { // do something } </code></pre> <p>Don't forget at the end to setup the timeout again too (or use setInterval?), in case the user takes a really long time to fill in the form.</p>