2013-02-20 27 views
0

我正在訪問一個web API,似乎每隔一段時間就會神祕地掛起。現在我正在使用print來做一些簡單的日誌記錄。我不熟悉線程或任何類似的東西,我希望只有一個簡單的方法來檢查自從返回新的打印語句以來已經過了多長時間,並且如果最大時間間隔已經正常退出我的函數到達。感謝您的任何意見。最簡單的方法來定時輸出功能

+1

你是如何發出這些請求? 'urllib2'和'requests'都實現了一個超時(我知道'requests'的確如此)。 – Blender 2013-02-20 04:32:52

+0

我看到一個用於FTP協議處理程序的'urllib2.setTimeout(self,t)'方法。 – Arcturus 2013-02-20 04:36:36

+0

這是一個API特定的庫 - 沒有像請求一樣通用。我沒有找到它的超時方法。好的建議,但;謝謝! – verbsintransit 2013-02-20 04:43:25

回答

0

使用time.time()模塊獲取以秒爲單位的時間;從文檔

「時間() - 秒>浮點數\ n \ nReturn當前時間,以秒 由於時代\ nFractions可以存在,如果系統時鐘 提供他們」

使用它的代碼,

import time 
tic = time.time() #start 
while True: 
    do_big_job() 
    toc = time.time(); 
    if (toc - tic > timeout): 
     break 
+0

謝謝,但我仍然感到困惑......在這種情況下,do_big_job()會掛起,並且toc永遠不會被初始化爲發生中斷 - 我想。我錯過了什麼? – verbsintransit 2013-02-20 04:41:35

+1

必須使用多線程來處理時間延遲。 – Octipi 2013-02-20 04:46:07

+0

所以你想在新線程中產生任務,並且當你在父進程中時,對一個標誌進行輪詢(在主和從之間共享,哪個從更新指示完成)。顯然,當您的輪詢時間超過超時時間時,您可以終止從屬線程。 – Arcturus 2013-02-20 04:55:57

相關問題