3

次のシナリオをサポートできるキューイングシステムを探しています。

  • クライアントがジョブを追加します-特定のURL(URL1)が持つFacebookの数を確認します。
  • クライアントは別のジョブを追加します-URL2の同じ情報をチェックします。
  • [....]

  • ワーカーはキューから1から50のジョブ(URL)をピックアップし(たとえば、5つしかない場合は5をピックアップし、60がある場合は50をピックアップし、他のワーカーを別のワーカーに任せます)、Facebookに対してリクエストを発行します。 API(リクエストごとに複数のURLを許可します)。成功した場合、すべてのジョブがキューから削除され、失敗した場合、すべてのジョブが残ります。

私はPHPを使用していて、GearmanBeanstalkdを調べましたが、同様の機能は見つかりませんでした。このような「バッチデキュー」をサポートする(無料の)キューイングシステムはありますか?

または、多分、誰かがそのような問題に対処する別の方法を提案することができますか?キューイングシステムの外部にある「チェックする」URLのリストを保持し、X期間ごとに実行されるcronジョブを使用して、それらを最大N個のアイテムのバンドルに追加することを検討しました。しかし、それはあなた自身のキューを構築するようなものであり、それは目的全体を打ち負かしますね?

4

2 に答える 2

1

Beanstalkdを使用して一度に100個のTwitter名を取得し、それらすべてを使用してAPIを呼び出しました。完了したら、それらを削除しましたが、必要に応じて一部(またはすべて)を削除しないことを選択することもできました。

最初の100を(一度に1つずつ)予約するのは単純なループであり、結果(ジョブIDと返されたデータ)を配列に入れました。ペイロード(この場合はTwitterの画面名)の処理が完了したら、それらを削除しましたが、簡単にキューに戻すことができたはずです。

于 2012-03-29T21:45:38.047 に答える
0

おそらく、MediaWikiのジョブキューシステムからインスピレーションを得ることができます。それほど複雑ではありませんが、自分でロールすることにした場合に遭遇する可能性のあるいくつかの問題があります。

これに使用されるDBテーブルは、ここで定義されています。

于 2012-03-03T22:59:36.137 に答える