Async: n /秒制限のmapLimit

作成日 2016年10月27日  ·  8コメント  ·  ソース: caolan/async

並列実行を数/秒に制限することは可能ですか?
これは、Google Sheet APIの制限や割り当て(https://developers.google.com/analytics/devguides/config/mgmt/v3/limits-quotasを参照)など、1秒あたりのクエリ数を制限するサービスに必要です( QPS)IPごと。
ありがとう!

docs feature wont fix

最も参考になるコメント

OP:おそらくあなたはすでにこれを解決しています.....私は別のNPMパッケージを使用して、リーキーバケットまたはトークンバケットモデルを使用してレート制限を実装しました。 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
 });

全てのコメント8件

同様の機能については以前に質問されています。 (#1113#1082#1020#942#37)ある種の「スロットルキュー」機能が求められていますが、そのような構成を適切に管理することは難しい問題です。

これは、人々が専用のメッセージキューライブラリとシステムを使用するようなものです。

tl; dr you / asyncは、これを行うために何らかの平滑化関数を必要とします。 これを行う場合は、おそらく指数平滑化関数であるトークンバケットを実装します。

誰かがこれに取り組むことに興味があるなら、私たちに知らせてください:)

OP:おそらくあなたはすでにこれを解決しています.....私は別のNPMパッケージを使用して、リーキーバケットまたはトークンバケットモデルを使用してレート制限を実装しました。 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
 });

これは、Readmeで言及する必要のあるlibのようです。 私たちが作りたかったことをしているようです。

うん、それは私が取っていたのと同じアプローチであるボンネットの下でトークンバケットを使用しています。 外部ライブラリに制限するレートを延期するのは非常にうまくいくでしょう:)

ええ、正直なところ、Async内でそのようなものをサポートしなければならないことにわくわくすることはありません。 レート制限を行う場合、非常に多くの落とし穴があります。

これのタグを変更して、非同期を拡張する他のライブラリのドキュメントに場所が必要であることを示します。

このページは役に立ちましたか?
0 / 5 - 0 評価