How can I check if datastore Indexes as defined in index.yaml are serving in the python code?
I am using Python 1.3.6 AppEngine SDK.
Попытка выполнить запрос, требующий этого индекса. Если он вызывает NeedIndexError, он не загружен или еще не обслуживается.
Я не не думаю, что есть способ проверить, не добавляя журнал в код SDK. Если вы используете заглушку SQLite, __FindIndexForQuery
, строки 1114–1140, — это часть, которая ищет подходящие индексы для запроса и (в строке 1140), возвращает и Цитирую:
Объект entity_pb.CompositeIndex PB, если подходящий индекс существует; в противном случае None
Небольшое ведение журнала в этот момент (и когда он вот-вот упадет с конца, исчерпав цикл — вот как он возвращает None) даст вам трассировку всех ваших индексов, которые фактически используются, как часть логи конечно. Возвращаемый буфер протокола является экземпляром класса, определенного в этом файле, начиная со строки 2576.
Если вы можете объяснить, почему вы хотите это знать, я думаю, это было бы вполне разумно чтобы открыть запрос функции в трекере App Engine, попросив Google добавить журнал, который я предлагаю, чтобы вам не нужно было поддерживать отредактированную версию файла!
(Если вы используете файл-заглушку, соответствующий файл находится здесь, а часть для инструментов находится в строке 824 и далее; конечно, эта часть будет использоваться только в том случае, если вы используете SDK в режиме «требовать индексы», также известный как «строгий режим», в противном случае индексы создаются в, а не используются , SDK;-)