2013-03-08 78 views
1

我遇到App Engine全文搜索API拋出TransientError問題。這是我可能做到的最簡單的形式(並且它仍然在生產服務器上給出了錯誤,但是卻沒有給出錯誤)。請注意,這發生在我的所有5個搜索索引中,而不僅僅是這一個。App Engine搜索API - 瞬態錯誤

from google.appengine.api import search 

query_obj = search.Query(query_string='') 
print search.Index(name='donation').search(query=query_obj) 

下面是錯誤的App Engine提供了:

File "/base/data/home/apps/s~ghidonations/4e.365801633107307526/GlobalUtilities.py", line 914, in search 
    search_results = search.Index(name=index_name).search(query=query_obj) 
File "/python27_runtime/python27_lib/versions/1/google/appengine/api/search/search.py", line 3093, in search 
    raise _ToSearchError(e) 
TransientError 

當我寫這一點,一些搜索查詢居然又開始工作(即5分鐘前拋出的錯誤),但仍有一些愚蠢的。我在以前的論壇上閱讀過有關按日期排序(我在實際生產代碼中進行排序)的論壇,因此我認爲將其排除可以解決問題。它沒有 - 在頂部看到3行代碼。

任何想法是什麼造成這種情況?

回答

2

瞬時錯誤是將來會消失的錯誤。我不知道是什麼導致了這些錯誤,谷歌建議只重試搜索。

# Index the document. 
try: 
    index.put(doc) 
except search.PutError, e: 
    result = e.results[0] 
    if result.code == search.OperationResult.TRANSIENT_ERROR: 
     # possibly retry indexing result.object_id 
except search.Error, e: 
    # possibly log the failure 

這個例子是從Index.put文件,但它在搜索API短暫的錯誤,我能找到的唯一的例子,所以我希望你也許可以使用相同的技術。

來源https://developers.google.com/appengine/docs/python/search/indexclass#Introduction

相關問題