2013-07-18 45 views
1

我目前正在嘗試修改plugin以通過AWS向新文章發佈指標。我已經成功地設計了從swf到新文件(最初不是插件)的插件文章度量標準,但是如果程序運行時間過長,則會遇到問題。速率超出workflow_execution輪詢

當程序回合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秒輪詢一次週期

有沒有辦法設置輪詢速率?或者另一種獲得工作流程執行的方式?

謝謝,這裏的紅寶石SDK的SWF中的鏈接=>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