2013-07-18 3 views
1

В настоящее время я пытаюсь изменить plugin для публикации метрик в новую реликвию через AWS. Мне удалось получить метрику post-post от swf до новой реликвии (не изначально в плагине), но столкнулись с проблемой, если программа работает слишком долго.Оценить Превышение в опросе workflow_execution

Когда программа работает в течение боя 10 минут я получаю следующее сообщение об ошибке:

Error occurred in poll cycle: Rate exceeded 

Я считаю, что это исходит из моего опроса швейцарских франков для рабочего процесса казни

domain.workflow_executions.each do |execution| 

     starttime = execution.started_at 
     endtime = execution.closed_at 
     isOpen = execution.open? 
     status = execution.status 

     if endtime != nil 
      running_workflow_runtime_total += (endtime - starttime) 
      number_of_completed_executions += 1 
     end 

     if status.to_s == "open" 
      openCount = openCount + 1 
     elsif status.to_s == "completed" 
      completedCount = completedCount + 1 
     elsif status.to_s == "failed" 
      failedCount = failedCount + 1 
     elsif status.to_s == "timed_out" 
      timed_outCount = timed_outCount + 1 
     end 

     end 

Это называется в цикл опроса каждые 60 секунд

Есть ли способ установить частоту опроса? Или другой способ получить выполнение рабочего процесса?

Спасибо, вот ссылка на рубиновый SDK для швейцарских франков =>link

+0

На самом деле нам нечего работать, потому что вы только дали нам голый начало вашей петле. См. Http://sscce.org для получения информации, которая нам нужна, чтобы помочь вам. –

+0

Спасибо за комментарий и предложение. Я обновил код, дайте мне знать, если это более полезно. – user2495753

ответ

2

Вопрос, вероятно, что вы создаете большое количество рабочих процессов расстрелов и каждую итерацию через цикл в workflow_executions вызываете поиск, который в конечном счете, превышает ваш лимит ставок.

Это также может быть немного дорогим, поэтому будьте осторожны.

Непонятно, что вы действительно пытаетесь сделать, поэтому я не могу сказать вам, как исправить это, если вы не разместите весь свой код (или части вокруг звонков в SWF).

Вы можете увидеть здесь:

https://github.com/aws/aws-sdk-ruby/blob/05d15cd1b6037e98f2db45f8c2597014ee376a59/lib/aws/simple_workflow/workflow_execution_collection.rb

То, что вызов к SWF для каждого рабочего процесса в коллекции.

+0

Но я не думаю, что создаю больше циклов рабочего процесса в этом цикле, только просматривая те, которые в настоящее время работают. Это также единственная часть моего кода, где я делаю что-либо с указанными сценариями рабочего процесса. Является ли количество казней, которые я искал, прямо в моем лимите? или является лимит, основанный на общем количестве широкомасштабных запросов, которые я делаю? – user2495753

+0

Он не вытаскивает их всех сразу. Я предполагаю, что каждая итерация через ваш код кода в {} вызывает вызов SWF для получения данных для следующего выполнения. Это количество исполнений, умноженное на количество раз, когда вы вызываете domain.workflow_executions.each – xaxxon