Превышение скорости в опросе workflow_execution

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

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

Error occurred in poll cycle: Rate exceeded

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

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 секунд.

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

Спасибо, вот ссылка на ruby ​​SDK для SWF => ссылка

1 ответ

Решение

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

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

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

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

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

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

Другие вопросы по тегам