Can you give examples of what exactly your sending ? Also the outline isn't really much help could you post actual code used ?
Tom Wilson Freelance Google Base Developer and Consultant www.tomthedeveloper.com Google Base Tools - http://dev.tomthedeveloper.com/googlebase Featured Project : http://google-code-featured.blogspot.com/2008/02/google-base-competitor-analysis.html On Jan 11, 10:14 am, strachjs <[email protected]> wrote: > Hi. I wonder if anyone can help or has tips on how to diagnose this > problem?... > > I have written a Java program to upload products to Google Base using > the data API in batch mode. The program determines what products are > to be amended and then builds and sends the appropriate batch > requests, e.g. inserts, updates or deletes. Each batch contains 10 > entries. For example, if we have 21 inserts and 5 deletes then 3 > insert batches would be sent and 1 delete batch. To reduce the load > on Google, there is a 2 second sleep after each batch. > > The program works fine when there are less than about 30 products. > However, if more than this then after a couple of batches have been > sent then Google stops responding and a time-out exception is thrown - > Error: Read timed out (I've set the timeout to 10 minutes). > > Any ideas why Google should stop responding when so little data has > been transferred? > > This is an outline of the code: > > /* Set-up Google service. */ > GoogleBaseService service = > new GoogleBaseService(APPLICATION_NAME, > googleFeedDeveloperKey); > service.setUserCredentials(googleFeedEmail, googleFeedPassword); > service.setReadTimeout(GOOGLE_BASE_SERVICE_TIMEOUT /*10 mins*/); > service.setConnectTimeout(GOOGLE_BASE_SERVICE_TIMEOUT /*10 mins*/); > . > For inserts (it is a similar for deletes and updates): > . > URL url = new URL("http://www.google.com/base/feeds/items"); > GoogleBaseFeed feed = service.getFeed(url); > > Link batchLink = feed.getLink(Link.Rel.FEED_BATCH, Link.Type.ATOM); > URL batchUrl = new URL(batchLink.getHref()); > > < loop for all products > > > < loop for just 10 products (i.e. each batch contains 10 > entries) > > > < read productRec from database > > > GoogleBaseEntry entry = new GoogleBaseEntry(); > feed.addEntry(entry); > > > entry.setTitle(TextConstruct.create(TextConstruct.Type.TEXT, > productRec.Title, null)); > > entry.setContent(TextConstruct.create(TextConstruct.Type.TEXT, > productRec.Description, null)); > entry.addHtmlLink(productRec.URL, null, null); > > entry.getGoogleBaseAttributes().setItemType("Products"); > entry.getGoogleBaseAttributes().addTextAttribute("id", > productRec.ID); > > entry.getGoogleBaseAttributes().addImageLink(productRec.ImageURL); > > entry.getGoogleBaseAttributes().addTextAttribute("currency", > "GBP"); > > entry.getGoogleBaseAttributes().addFloatAttribute("price", > productRec.Price); > > entry.getGoogleBaseAttributes().addIntAttribute("quantity", > productRec.Quantity); > > entry.getGoogleBaseAttributes().addTextAttribute("condition", > productRec.ProductCondition); > > entry.getGoogleBaseAttributes().addTextAttribute("item_language", > "en"); > > entry.getGoogleBaseAttributes().addTextAttribute("target_country", > "GB"); > > /* Calculate expire date. */ > Calendar cal = Calendar.getInstance(); > cal.add(Calendar.DATE, REFRESHDAYS); > entry.getGoogleBaseAttributes().setExpirationDate(new > DateTime > (cal.getTime())); > > /* Mark for INSERT. */ > BatchUtils.setBatchOperationType(entry, > BatchOperationType.INSERT); > > /* Assign a unique ID for tracking. */ > BatchUtils.setBatchId(entry, ""+googleTrackerID); > > < end inner loop > > > /* Send batch of 10 entries. */ > GoogleBaseFeed result = service.batch(batchUrl, feed); > > *** GOOGLE STOPS RESPONDING AFTER ABOUT 2 BATCHES HAVE BEEN > SENT. > *** > > < handle response > > > /* Batch sent - Reset data structure. */ > feed = service.getFeed(url); > > <snooze for 2 seconds> > > < end outer loop > > > Thanks, > john
-- You received this message because you are subscribed to the Google Groups "Google Base Data API" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-base-data-api?hl=en.
