1

我遇到了 App Engine 全文搜索 API 抛出TransientError. 这是我可以做到的最简单的形式(它仍然在生产服务器上给出错误,但不是在开发服务器上)。请注意,这发生在我的所有 5 个搜索索引上,而不仅仅是这个。

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 行代码。

知道是什么原因造成的吗?

4

1 回答 1

2

TransientErrors 是将来会消失的错误。我不知道是什么导致了这些错误,谷歌的错误建议只是重试搜索。

# 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

于 2013-03-08T09:14:50.473 回答