MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

изпълните само една от многото дублирани задачи със sidekiq?

Първоначалното ми предложение би било мютекс за тази конкретна работа. Но тъй като има вероятност да имате множество сървъри за приложения, работещи със задачите на 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Възможно ли е да се върне изчислено поле от MongoDB заявка?

  2. Предотвратете дублиране на влизане с FOSUserBundle

  3. Композитен ключ на MongoDB:InvalidOperationException:{document}. Самоличността не се поддържа

  4. Как да актуализирам полето за дата в mongo конзолата?

  5. PostgreSQL и MongoDB WHERE IN условия