0
我試圖獲得一個芹菜隊列任務的等待時間。據我所知,我可以通過芹菜工作人員發佈的Event流來實現。在好奇心中,爲什麼簡單的時間戳沒有嵌入到排隊的任務中?這與分佈式系統設計有關嗎?爲什麼Celery不將時間戳嵌入到排隊的消息中?
注:芹菜== 3.0.12
我試圖獲得一個芹菜隊列任務的等待時間。據我所知,我可以通過芹菜工作人員發佈的Event流來實現。在好奇心中,爲什麼簡單的時間戳沒有嵌入到排隊的任務中?這與分佈式系統設計有關嗎?爲什麼Celery不將時間戳嵌入到排隊的消息中?
注:芹菜== 3.0.12
你不能依賴於分佈式系統中的物理壁時間,所以這樣的場不會是非常有用的。
由於task-started
和task-succeeded
時間戳都來自同一個時鐘源,所以事件流有所不同。
儘管如此,有些時候的近似值可能是有用的,所以你也可以自己添加此 信息:
add.apply_async((4, 4), headers={'time_sent': time.time()})
您可以訪問郵件頭中的任務(但請注意,這需要芹菜3.1):
@app.task(bind=True)
def add(self, x, y):
print('Approximate queue time: {0}'.format(
time.time() - self.request.headers.get('time_sent', 0),
))
return x + y
實際上,我正在設置一個AWS CloudWatch自定義指標,用於監視隊列中任務的等待時間。那麼,我應該添加一個像你在答案中提到的標題嗎? – mrkschan
您可以這樣做,或者您可以使用自定義事件監視器(用戶指南 - >監視)來收集信息, – asksol