工作流程执行轮询中的速率超过

时间:2013-07-18 04:48:03

标签: ruby amazon-web-services amazon-swf newrelic-platform

我目前正在尝试修改plugin,以便通过AWS将指标发布到新文件。我已成功设法将插件从swf发布到新的relic(最初不在插件中),但是如果程序运行时间过长则遇到问题。

当程序运行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秒在一个轮询周期中调用它

有没有办法设置轮询率?或者另一种获得工作流程执行的方法?

谢谢,这是指向swf =>的ruby sdk的链接link

1 个答案:

答案 0 :(得分:2)

问题很可能是您正在创建大量工作流程执行,并且每次在workflow_executions中循环的迭代都会导致查找,最终超出了您的速率限制。

这也可能有点贵,所以要小心。

目前尚不清楚你真正想要做什么,所以我不能告诉你如何解决它,除非你发布所有代码(或调用SWF的部分)。

你可以在这里看到:

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

为集合中的每个工作流程调用SWF。