λ³λ ¬ μ€νμ μ/μ΄λ‘ μ νν μ μμ΅λκΉ?
μ΄λ Google Sheet API Limits λ° Quotas(https://developers.google.com/analytics/devguides/config/mgmt/v3/limits-quotas μ°Έμ‘°)μ κ°μ΄ μ΄λΉ 쿼리 μλ₯Ό μ ννλ μλΉμ€μ νμν©λλ€( QPS) IPλΉ.
κ°μ¬ ν΄μ!
λΉμ·ν κΈ°λ₯μ΄ μ΄μ μ μμ²λμμ΅λλ€. ( #1113 #1082 #1020 #942 #37 ) μΌμ’ μ "throttled queue" κΈ°λ₯μ λν μμκ° μμ§λ§ κ·Έλ¬ν ꡬμ±μ μ μ νκ² κ΄λ¦¬νλ κ²μ μ΄λ €μ΄ λ¬Έμ μ λλ€.
μ΄κ²μ μ¬λλ€μ΄ μ μ© λ©μμ§ λκΈ°μ΄ λΌμ΄λΈλ¬λ¦¬ λ° μμ€ν μ μ¬μ©νλ μ’ λ₯μ λλ€.
tl;dr you/asyncλ μ΄λ₯Ό μννκΈ° μν΄ μΌμ’
μ ννν κΈ°λ₯μ΄ νμν©λλ€. μ΄λ κ² νλ©΄ ν ν° λ²ν· κ³Ό κ°μ μ§μ νν κΈ°λ₯ μ ꡬνν κ²μ
λλ€.
μ΄ μμ μ κ΄μ¬μ΄ μλ μ¬λμ΄ μμΌλ©΄ μλ €μ£Όμμμ€. :)
OP: μλ§λ λΉμ μ μ΄λ―Έ μ΄κ²μ ν΄κ²°νμ κ²μ λλ€.... μ λ λ€λ₯Έ NPM ν¨ν€μ§λ₯Ό μ¬μ©νμ¬ leakybucket λλ ν ν° λ²ν· λͺ¨λΈμ μ¬μ©νμ¬ μλ μ νμ ꡬννμ΅λλ€. https://www.npmjs.com/package/limiter μ΄κ²μ κ³Όκ±°μ μ μλνμ΅λλ€. μλ μ ν λ§€νΌ κΈ°λ₯μ λ§λ€λ €λ©΄ λ€μκ³Ό κ°μ΄ νμμμ€. λ§€νΌ ν¨μλ λΉλκΈ°μ ν¨κ» μ§μ μ¬μ©λ©λλ€.
var RateLimiter = require("limiter").RateLimiter;
var limiter = new RateLimiter(2, "second");
var async = require('async');
function rateLimitedMapper(item, callback)
{
limiter.removeTokens(1, function(err, remainingRequests) {
console.log("working on item: " + item);
callback(null, item.length);
});
}
async.map(input, rateLimitedMapper, function(err, results) {
// do something with results
});
κ·Έκ²μ μ°λ¦¬κ° μ½μ΄λ³΄κΈ°μμ μΈκΈν΄μΌ νλ λΌμ΄λΈλ¬λ¦¬μ²λΌ 보μ λλ€. μ°λ¦¬κ° λ§λ€κ³ μΆμλ κ²μ ν κ² κ°μ΅λλ€.
μ, λ΄κ° μ·¨ν κ²κ³Ό λμΌν μ κ·Ό λ°©μμΈ νλ μλμ ν ν° λ²ν·μ μ¬μ©νκ³ μμ΅λλ€. λλ μΈλΆ λΌμ΄λΈλ¬λ¦¬λ‘ μλ μ νμ μ°κΈ°νλ κ²μ΄ μ’μ΅λλ€. :)
μ, μμ§ν Async λ΄μμ μ΄μ κ°μ κ²μ μ§μν΄μΌ νλ κ²μ κ°κ²©νμ§ μμ κ²μ λλ€. μλ μ νμ ν λ λ¬Έμ κ° λ무 λ§μ΅λλ€.
μ΄ νκ·Έλ₯Ό λ³κ²½νμ¬ Asyncλ₯Ό νμ₯νλ λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬μ λν λ¬Έμμ μμΉκ° νμν¨μ λνλ λλ€.
Promise.all λ° promise-throttleμ μ¬μ©νμ¬ μ΄ μμ μ μννλ λ λ€λ₯Έ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
OP: μλ§λ λΉμ μ μ΄λ―Έ μ΄κ²μ ν΄κ²°νμ κ²μ λλ€.... μ λ λ€λ₯Έ NPM ν¨ν€μ§λ₯Ό μ¬μ©νμ¬ leakybucket λλ ν ν° λ²ν· λͺ¨λΈμ μ¬μ©νμ¬ μλ μ νμ ꡬννμ΅λλ€. https://www.npmjs.com/package/limiter μ΄κ²μ κ³Όκ±°μ μ μλνμ΅λλ€. μλ μ ν λ§€νΌ κΈ°λ₯μ λ§λ€λ €λ©΄ λ€μκ³Ό κ°μ΄ νμμμ€. λ§€νΌ ν¨μλ λΉλκΈ°μ ν¨κ» μ§μ μ¬μ©λ©λλ€.