Тайм-аут запроса Engine App.fetch () для большой базы данных? - PullRequest
1 голос
/ 08 августа 2010
def get(self):
    links = Link.all().order("author")
    response = ""
    links.fetch(10)
    for link in links:
        response += "[link][/link]"

По какой-то причине этот код занимает отвратительный объем ЦП и, в конечном итоге, просто теряет время при запуске в базе данных, содержащей более 8000 записей.Разве App Engine не может обрабатывать большие наборы данных?Я что-то делаю глупо?

1 Ответ

3 голосов
/ 08 августа 2010

Этот раздел:

links.fetch(10)
for link in links:
    response += "[link][/link]"

неверен..fetch() возвращает извлеченные записи, но вы никому не назначаете возвращенные записи.Затем вы перебираете объект запроса, в результате чего App Engine возвращает все 8000 результатов в пакетах по 20, что намного менее эффективно, чем единичная групповая выборка.

Если вам нужно только 10 результатов,вам следует сделать следующее:

for link in links.fetch(10):
    response += "[link][/link]"

Если вам нужны все 8000 результатов, то, вероятно, вам лучше пересмотреть вопрос, если ваши пользователи могут обрабатывать 8000 результатов на одной странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...