Please remove me from this mailing list. Thanks!


On Tue, Jan 12, 2010 at 4:05 PM, Tom Wilson
<[email protected]>wrote:

> 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]<google-base-data-api%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-base-data-api?hl=en.
>
>
>
>
--
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.

Reply via email to