diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2018-05-06 14:29:44 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2018-05-06 14:29:44 +0200 |
| commit | d2eb3e07bf77bcb1fa85f1ddd768fffc5bb2a3b4 (patch) | |
| tree | 249decdde6e98e3bf4690461cee3d0553539c812 | |
| parent | c8d900349a2a518c5fee9610b6a903a2ff546e50 (diff) | |
| download | brokentalents-d2eb3e07bf77bcb1fa85f1ddd768fffc5bb2a3b4.tar.gz brokentalents-d2eb3e07bf77bcb1fa85f1ddd768fffc5bb2a3b4.zip | |
remove rate limit, do not crash on http 4xx
| -rw-r--r-- | config.js | 23 | ||||
| -rw-r--r-- | index.js | 2 | ||||
| -rw-r--r-- | source.js | 7 |
3 files changed, 21 insertions, 11 deletions
@@ -18,29 +18,38 @@ module.exports = { timeout: 3, /* available: eu, na, sg, cn, sa, ea */ regions: ['sg', 'eu', 'na'], - /* available: casual, ranked, blitz_pvp_ranked, casual_aral */ - modes: ['blitz_pvp_ranked'], + /* available: casual, 5v5_pvp_casual, ranked, 5v5_pvp_ranked, blitz_pvp_ranked, casual_aral */ + modes: ['blitz_pvp_ranked', 'casual_aral'], /* available: 2, 3, 4, 5 */ matchesPerRequest: 5, /* How many equidistant requests to create - * matchesPerRequest * requestsPerInterval = sample size for that interval */ - requestsPerInterval: 5, + * matchesPerRequest * requestsPerInterval = sample size for that interval + * currently requestsPerInterval <= API key rate limit but should work if it isn't significantly higher + * rough estimate of upper limits (na/eu/sg, depends on region and time of day): + * blitz: 240 + * battle royale: 30 + * 3v3 casual: 30 + * 3v3 ranked: 100 + * 5v5 casual: 30 + * 5v5 ranked: 40 + * if filtering for multiple game modes, use the sum of the upper limits */ + requestsPerInterval: 50, /* the size of a batch */ interval: 1, intervalUnit: 'hours', /* How many batches to request per minute * requestsPerInterval * intervalsPer Minute <= API key rate limit */ - intervalsPerMinute: 10, + intervalsPerMinute: 1, }, etl: { /* attributes to be extracted and renamed from main API data */ participant: [ ['Winner', ['attributes', 'stats', 'winner']] ], roster: [ ], - match: [ ], + match: [ ['Mode', ['attributes', 'gameMode']] ], }, reduce: { /* criteria or 'filters' */ - group: ['Actor', 'Talent'], + group: ['Actor', 'Talent', 'Mode'], /* stats */ sum: ['Level', 'Winner'], }, @@ -15,7 +15,7 @@ function main() { const firstOfMay = moment('2018-05-01'); const later = R.curry((base, hs) => base.clone().add(hs, 'hours')); - const hours = R.range(0, 24 * 4); + const hours = R.range(0, 24 * 5); const laterMoments = R.map(later(firstOfMay), hours); const futures = R.map(loadFTimestamped, laterMoments); @@ -19,9 +19,10 @@ function doFetchProcessStoreHour(config) { return (timestamp) => Future.parallel(1, requestsForHour(timestamp)) .map(R.compose(aggregatePayloads, R.unnest)) - .chain(/*R.map(R.chain(Future.after(intervalSleep),*/ saveFPayloads(timestamp))/*))*/ - .chain(Future.after(intervalSleep)); - // TODO sleeps after request; throttling rpm should happen + .chainRej((err) => { console.error(err); return Future.of({}); }) // fail silently + .chain(saveFPayloads(timestamp)); + //.chain(Future.after(intervalSleep)); + // TODO should sleep after request; throttling rpm should happen // at a higher level though. CPU / IO / AWS requests stall // as well } |
