在Google App Engine上,請求可以通過多種方式啓動:Web請求,cron作業,任務隊列以及其他可能的方式。如何確定何時在GAE託管虛擬機上啓動請求?
你怎麼能(特別是在託管虛擬機上)確定當前請求開始的時間?
一個解決方案是儀器的所有入口點,並將開始時間保存在某個地方,但如果有一個環境變量或告訴何時請求開始會很好。這很重要的原因是因爲許多GAE請求都有截止日期(在各種情況下爲60秒或10分鐘),並且確定您在做某些額外工作時請求留下了多少時間會很有幫助。
在Google App Engine上,請求可以通過多種方式啓動:Web請求,cron作業,任務隊列以及其他可能的方式。如何確定何時在GAE託管虛擬機上啓動請求?
你怎麼能(特別是在託管虛擬機上)確定當前請求開始的時間?
一個解決方案是儀器的所有入口點,並將開始時間保存在某個地方,但如果有一個環境變量或告訴何時請求開始會很好。這很重要的原因是因爲許多GAE請求都有截止日期(在各種情況下爲60秒或10分鐘),並且確定您在做某些額外工作時請求留下了多少時間會很有幫助。
我們沒有特別暴露任何讓您知道當前請求剩餘多少時間的內容。您應該能夠通過在請求的入口點記錄時間並將其存儲在線程本地靜態中來完成此操作。
這需要聽起來......可疑的。你爲什麼做這個?使用一個工人/隊列模式進行輪詢可能需要很長時間,這可能是一個更好的主意。
您可以在開發者控制檯的日誌中看到所有這些信息。必要時,您還可以將更多數據添加到代碼中的日誌中。
道歉,如果我的問題不清楚,但我想知道如何以編程方式做到這一點,即如果請求目前正在運行,請嘗試找出您已經離開了多少時間。 – speedplane
看看關機掛鉤:https://cloud.google.com/appengine/docs/java/modules/ –
這就是我現在正在做的事情,它很煩人,因爲有多個入口點(cron作業,延遲,正常請求等),並且您需要對每個入口點進行測試。 Django中間件有所幫助,但是沒有延遲庫的中間件。我這麼做主要是爲了在第三方URL抓取上設置一個合理的超時時間。我想確保我總是將超時設置爲小於必須完成請求的時間,以確保如果失敗,我有足夠的時間進行清理。 – speedplane