sql >> データベース >  >> NoSQL >> MongoDB

sidekiqで多くの重複ジョブのうちの1つだけを実行しますか?

    私の最初の提案は、この特定の仕事のミューテックスです。ただし、複数のアプリケーションサーバーがsidekiqジョブを実行している可能性があるため、redisレベルで何かを提案します。

    たとえば、redis-semaphore を使用します sidekiqワーカー定義内。 テストされていない例

    def perform
      s = Redis::Semaphore.new(:map_reduce_semaphore, connection: "localhost")
    
      # verify that this sidekiq worker is the first to reach this semaphore.
      unless s.locked?
    
        # auto-unlocks in 90 seconds. set to what is reasonable for your worker.
        s.lock(90)
        your_map_reduce()
        s.unlock
      end
    end
    
    def your_map_reduce
      # ...
    end
    


    1. mongo3.4.1に単純な読み取り/書き込みユーザーを追加します

    2. Mongodb-$setと$setOnInsertの重複フィールド

    3. ConfigurationError:127.0.0.1:27017のサーバーはワイヤーバージョン0を報告しますが、このバージョンのPyMongoには少なくとも2つ必要です(MongoDB 2.6)

    4. phpMongoCursorからJSONデータを返す方法