Google App Engine: uso de la API de Blobstore con Google Cloud Storage

Tuve que almacenar archivos que tenían tamaños al norte de 1 MB y el motor de aplicación de Google me recomendó que los almacenara en Google Cloud Storage. El motor de aplicaciones BlobProperty no era adecuado.

La sección Uso de la API de Blobstore con Google Cloud Storage aconseja usar el parámetro gs_bucket_name de la función create_upload_url.

Lo intenté.

gcs_upload_url = blobstore.create_upload_url('/myupload', gs_bucket_name='bucketname.appspot.com/') 

La URL resultante que obtengo para el POST no es /myupload , dice algo así como

  

He cambiado la parte después de / upload /, pero el punto es que claramente se pierde la creación de una URL de carga adecuada, que puede ser reconocida por mi controlador.

¿Cuál es la forma correcta de usar create_upload_url con gs_bucket_name y también obtener la URL correcta para la entrega de la publicación?

Claramente la documentación oficial no es útil aquí.

La ruta que pasó en la función create_upload_url es success_path. Ver descripción a continuación.

La ruta URL del controlador de la solicitud que procesará la solicitud de carga, después de que el archivo enviado con el formulario se haya cargado en Blobstore.

App Engine llama a success_path después de que el archivo se haya cargado en BlobStore o Google Cloud Storage.

Cuando el usuario envía un formulario web de carga, los datos cargados van directamente a Blobstore o a Google Cloud Storage si lo usa en lugar de Blobstore. (Google Cloud Storage requiere el parámetro gs_bucket_name.) Blobstore reescribe la solicitud entrante para eliminar los datos cargados (el cuerpo de la parte MIME) y agrega la clave Blobstore (como encabezado en la parte MIME), luego pasa la solicitud reescrita a la aplicación controlador asociado con la ruta de la URL dada a create_upload_url () como success_path. El controlador en esa ruta puede procesar el rest del formulario.

La URL proporcionada por esta función está diseñada para ser utilizada como la acción de su formulario de carga. La ruta proporcionada por usted es algo así como un controlador de carga posterior.

Esa es la forma correcta. La propia URL de carga es manejada por AppEngine: aceptará la carga del archivo y luego llamará directamente a su propio controlador.