tl;dr Do you of any libraries for parallelizing HTTP requests with 
per-server concurrency control and handling of retries?

I'm writing a service that fetches many independent small binary blobs (map 
tiles) over HTTP from a several upstream servers and package them together 
in to a single archive. I want to parallelize the fetching of the small 
binary blobs. Currently there are O(10) upstream servers and O(1000) small 
binary blobs fetched from each.

Making parallel HTTP requests in Go is trivially easy and is demonstrated 
in many Go tutorials and blog posts. However, I'm looking for a "production 
ready" library that supports:
* Per upstream server concurrency limits.
* Overall (across all upstream servers) concurrency limits.
* Controllable retries with exponential backoff in the case of upstream 
server errors.
* Timeouts for upstream requests.
* context.Context support.

This would seem to be a common enough task that I would expect to find an 
existing library that does all of the above. Existing Go web scrapers, e.g. 
colly <http://go-colly.org>, likely have this functionality internally but 
do not expose it in their API and are instead focused on crawling web pages.

Do you know of any such library?

Many thanks,
Tom

-- 
Confidentiality Notice:
This electronic message and any attached documents 
contain confidential and privileged information and is for the sole use of 
the individual or entity to whom it is addressed. If you are not the 
addressee of this email, or the employee or agent responsible for 
delivering it to the addressee, you are hereby notified that any 
dissemination, distribution or copying of this transmission is strictly 
prohibited. If you receive this message in error, please notify the sender 
immediately by return e-mail or telephone and destroy the attached message 
(and all attached documents) immediately. Thank you for your cooperation.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/cfb138b2-88d4-46ee-9315-996389718bad%40googlegroups.com.

Reply via email to