2016-01-13 45 views
0

我正在使用python中的請求包來查詢正在爲我執行一些處理的異步Web服務。如何確定在處理狀態檢查之間等待的最佳間隔時間?您是否需要爲典型的處理請求生成典型的等待時間分佈?如果您生成了這樣的數據集,它會有用嗎?查詢異步Web服務的速率?

編輯:

你大概可以從這個documentation看,似乎沒有成爲這方面的服務,讓我知道處理完成回呼選項。

這裏是表示等待時間的分佈(以秒計)的初始請求和處理完成之間的直方圖:

enter image description here

回答

2

作爲一般規則,異步操作應該提供一些信號他們已經完成了,所以不需要進行輪詢。檢查文檔以查看請求完成時是否可以調用回調函數。

如果您別無選擇,只能輪詢,那麼目標是儘量減少接受響應的延遲,同時不要通過過度輪詢過度加載服務。適當的比例將取決於服務實際請求的相對成本與服務投票的成本。

響應時間主要取決於多少其他請求排隊的服務往往具有遵循泊松分佈的響應時間,但其他分佈也是可能的。

在大多數情況下,即使開始輪詢,直到您接近平均響應時間,也沒有什麼意義。

這可能是有用的:

  • 記錄最近查詢的時間,以用於預計未來的請求(平均值,STDDEV和「適合」的各種分佈包括泊松)
  • 使用背與預期分配相匹配的關閉策略;通常這意味着指數後退。加倍很容易計算,但有點粗糙;黃金平均值(Φ=(1 +√5)/ 2)是一個很好的通用比例,但您可能可以爲您的特定應用程序做得更好。
  • 由於過期的查詢,可接受的故障率是多少?
  • 是否底層系統有一個合理的方法取消正在進行的查詢,或者他們只是繼續在服務器上運行浸泡了資源?)
+0

歡迎SO和漂亮的第一篇文章!我唯一的建議來改善你的答案將是考慮包括你談論的事情的鏈接。總的來說,好的工作一次又一次,歡迎。 –

+0

添加了一些編輯來解決答案的某些方面。 – traggatmot

+0

是的,看起來很漂亮_Poissonish_,偏移大約3秒 - 大概是卸載時回答查詢的最短時間。 – Martin