1

我目前正在尝试修改一个插件,以通过 AWS 将指标发布到 new-relic。我已经成功地使插件发布指标从 swf 到 new 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 秒的轮询周期中调用一次

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

谢谢,这是 ruby​​ sdk for swf 的链接 =>链接

4

1 回答 1

2

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

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

目前尚不清楚您真正想要做什么,因此除非您发布所有代码(或围绕 SWF 调用的部分),否则我无法告诉您如何修复它。

你可以在这里看到:

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

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

于 2013-07-18T06:37:30.840 回答