precios google engine costos app python-2.7 google-app-engine app-engine-ndb google-cloud-datastore

python 2.7 - costos - Error de Google App Engine: NeedIndexError: no se encontró un índice coincidente



google app engine precios (5)

Consulte https://appengine.google.com/datastore/indexes para ver si este índice está presente y el estado está configurado como "en servicio". Es posible que el índice todavía se está construyendo.

El entorno de desarrollo emula el entorno de producción. Realmente no tiene índices en el sentido del almacén de datos.

Estoy teniendo problemas con los índices del motor de aplicaciones de Google. Cuando ejecuto mi aplicación a través de GoogleAppEngineLauncher, la aplicación funciona bien. Al implementar la aplicación, recibo el siguiente error:

NeedIndexError: no matching index found. The suggested index for this query is: - kind: Bar ancestor: yes properties: - name: rating direction: desc

El error se genera después de esta línea de código:

bars = bar_query.fetch(10)

Antes de la línea de código anterior, se lee:

bar_query = Bar.query(ancestor=guestbook_key(guestbook_name)).order(-Bar.rating)

Mi archivo index.yaml contiene el índice "sugerido" exacto a continuación # AUTOGENERADO:

- kind: Bar ancestor: yes properties: - name: rating direction: desc

¿Tal vez me esté perdiendo algo? Quité el archivo index.yaml y volví a implementar la aplicación (a través de la línea de comandos) y se cargó un archivo menos, por lo que el archivo index.yaml está allí.

Todo funciona bien localmente. Estoy trabajando en la última Mac OSx. El comando utilizado para la implementación fue:

appcfg.py -A app-name --oauth2 update app

El almacén de datos que implementé se basa libremente en la aplicación tutorial del libro de visitas.

Cualquier ayuda sería muy apreciada.

EDITAR:

Mi ndb.Model se define como sigue:

class Bar(ndb.Model): content = ndb.StringProperty(indexed=False) lat = ndb.FloatProperty(indexed=False) lon = ndb.FloatProperty(indexed=False) rating = ndb.IntegerProperty(indexed=True) url = ndb.TextProperty(indexed=False)


En mi caso, he subido el archivo de índice manualmente como a continuación:

gcloud datastore indexes create "C:/Path/of/your/project/index.yaml"

Entonces debes confirmar la actualización:

Configurations to update: descriptor: [C:/Path/of/your/project/index.yaml] type: [datastore indexes] target project: [project_name] Do you want to continue (Y/n)? y

Luego puede ir a la consola del almacén de datos para verificar si el índice se ha creado a través de este enlace: https://console.cloud.google.com/datastore/indexes


Me topé con el mismo problema y sus comentarios me ayudaron en la dirección correcta. Esto es lo que Google dice cómo manejar esto:

Según la documentación de Google, la historia es que usando

gcloud app deploy

el archivo index.yaml no se ha cargado (la pregunta es ¿por qué no?). De todos modos, uno tiene que subir este archivo de índice manualmente.

Para ello, la documentación da el siguiente comando:

gcloud datastore create-indexes index.yaml

(Suponiendo que ejecute esto desde el mismo directorio del archivo index.yaml) Una vez que haya hecho esto, puede ir a la consola del almacén de datos y verá que se ha creado el índice. Luego comenzará a indexarse ​​(tomó unos 5 minutos en mi caso) y una vez que el índice esté siendo servido, podrá iniciar su aplicación.


Probablemente un poco tarde ahora, pero la ejecución de "gcloud app deploy index.yaml" ayudó ya que la ejecución de la implementación por sí sola ignoró el archivo index.yaml.

Como han dicho otros, el panel de control en https://appengine.google.com/datastore/indexes se mostrará "pendiente" por un tiempo.


Solucioné este problema moviendo el índice que el error dice que falta sobre la línea de generación automática en el archivo "index.yaml".

En tu caso el archivo yaml se verá así:

indexes: - kind: Bar ancestor: yes properties: - name: rating direction: desc # AUTOGENERATED

Luego, todo lo que tiene que hacer es actualizar su aplicación, luego actualizar los índices, actualice los índices ejecutando el siguiente comando.

appcfg.py [options] update_indexes <directory>

Con el directorio siendo el directorio relativo a su archivo index.yaml. Luego debería ver ese índice en su panel de control en https://appengine.google.com/datastore/indexes

La actualización estará inicialmente "pendiente", pero después de que el índice diga "servir" podrá realizar su consulta.