【问题标题】:Rate Exceeding in workflow_execution polling工作流执行轮询中的速率超出
【发布时间】:2013-07-16 21:17:39
【问题描述】:

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

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

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

【问题讨论】:

  • 我们真的没有什么可以工作的,因为你只是给了我们你循环的一个简单的开始。请参阅sscce.org 了解我们需要帮助您的信息。
  • 感谢您的评论和建议。我更新了代码,让我知道这是否更有帮助。

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


【解决方案1】:

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

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

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

你可以在这里看到:

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

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

【讨论】:

  • 但是我不认为我在这个周期中创建了更多的工作流执行,只查找当前正在运行的那些。这也是我对上述工作流执行做任何事情的代码的唯一部分。我正在查找的执行次数是否直接影响我的限制?还是基于我正在执行的广泛查找的总数限制?
  • 它不会一下子把它们全部拉出来。我猜测您在 {} 中的代码体的每次迭代都会导致调用 SWF 以获取下一次执行的数据。这是执行次数乘以你调用 domain.workflow_executions.each 的次数
猜你喜欢
  • 2014-06-07
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多