Details
-
Suggestion
-
Resolution: Unresolved
-
P4: Low
-
None
-
4.6.3
-
None
Description
My application makes a series of hundreds of GET requests for small subranges (~20k) of a set of large files (20Gb) on the same host using HTTP's Range header. My data is hosted on Amazon S3, so there is a monetary cost for each GET request, and I'd like to combine adjacent requests wherever possible.
Ideally I'd like to do the following:
- Keep a queue of pending requests in my code
- Whenever I want to make a new request, add it to my own queue, merging it with any adjacent requests.
- Whenever my QNetworkAccessManager instance is ready to make a new HTTP request, submit a new request from the queue.
Unfortunately, since QNetworkAccessManager doesn't provide any notification about whether it has connection slots available, nor even how many slots might exist, I can only guess when to submit new requests to the manager. I can either submit them too early, in which case I might miss opportunities for merging requests, or too late, in which the connection might sit idle.
Would it be possible to add a signal emitted when a QNetworkAccessManager has an available TCP connection or an idle pipelined connection? Alternatively could QNetworkAccessManager provide a function that identifies the number of simultaneous connections it is willing to make to each host/port combination so my code knows how many requests to try to keep in flight at any given time?
Attachments
Issue Links
- relates to
-
QTBUG-8468 QNetworkAccessManager Configurable max number of connections
-
- Closed
-