2011-02-01 19 views
3

由於Python版本的Google App Engine中不支持信號模塊,因此如果方法在2秒內未返回,調用方法並拋出/捕獲異常的最簡單方法是什麼?如何限制python版Google App Engine中特定方法的允許執行時間?

+0

我沒有看到任何關於它不被支持的文檔。你有沒有找到任何東西,或只是嘗試使用它,並注意到,當你導入它時,你會得到一個空的模塊? – 2012-09-22 07:08:53

回答

4

如果你正在談論RPC調用,如數據存儲,您可以創建一個最後期限(見create_rpc)的RPC,通過RPC到您的數據存儲功能(db.getdb.put,等...),然後抓DeadlineExceededErrors

# Set a five-second timeout 
rpc = db.create_rpc(deadline=5) 

# A query: 
query = YourModel.all().fetch(100, rpc=rpc) 

URLFetchfetch功能還需要一個期限參數。

對於您自己的代碼,您可以實施自檢,請參閱time模塊。

+0

謝謝。在許多情況下,RPC超時功能應該會有所幫助,但是如果要調用的方法不會等待查詢或數據存儲區功能完成,那麼如何才能拋出超時異常?作爲一個人爲的例子,假設我調用的方法陷入了無限循環。 – Chris 2011-02-01 09:57:05

0

在循環中,您可以存儲循環開始的時間,並檢查每次迭代進行的時間。

如果你是而不是在循環中,事情有點棘手。您可以每隔幾行代碼添加一次時間檢查位。這當然會造成非常醜陋的代碼,但是如果沒有能夠產生可以在後臺運行計時器的線程並中斷正在運行的代碼,則沒有太多辦法可以解決這個問題。

相關問題