sql >> Database >  >> NoSQL >> MongoDB

slechts één van de vele dubbele taken uitvoeren met sidekiq?

Mijn eerste suggestie zou een mutex zijn voor deze specifieke taak. Maar aangezien er een kans is dat meerdere applicatieservers de sidekiq-taken uitvoeren, zou ik iets op redis-niveau voorstellen.

Gebruik bijvoorbeeld redis-semafoor binnen uw sidekiq-werknemersdefinitie. Een niet-getest voorbeeld :

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. Rescue Time-out::Fout van Redis Gem (Ruby)

  2. Update/vernieuwt Mongoose upsert-bewerking de standaardschemawaarden?

  3. Lijst met MongoDB-datumoperators, methoden en variabelen

  4. OData-service met NodeJS en JayData