2012-05-22 11 views
5

Recientemente tuve dos problemas al cargar archivos en mi aplicación Java gae. Estoy usando la técnica descrita en el blobstore doc.503 y 400 en la carga de imágenes en Google App Engine

  1. Con archivos regulares, ocasionalmente (digamos 15% de veces) el cliente recibe un "Servicio 503 no disponible".
  2. Con imágenes de alta resolución (ejemplo 7000x10000), el cliente siempre recibe una "400 Solicitud incorrecta".

En ambos casos en el servidor no hay mensajes de error registrados, las manchas están escritos correctamente, pero la url successPath (la devolución de llamada de createUploadUrl) Nunca se llama. Parece que el punto final GAE que maneja los bloqueos de carga por alguna razón.

Mi cliente es un XMLHttpRequest js, envuelto en GWT:

public native void uploadWithXMLHttpRequest(UploadForm uploadForm) /*-{ 
    var fd = new FormData(); 
    var files = [email protected]::getFiles()(); 
    for (var i = 0; i < files.length; i++) { 
     fd.append("uploadFile"+i, files[i]); 
    } 
    var xhr = new XMLHttpRequest(); 
    //xhr.upload.addEventListeners... omitted 
    xhr.open("POST", [email protected]::getUploadUrl()()); 
    xhr.send(fd); 
} 

¿Alguna idea para posibles causas y soluciones/soluciones? Thx.

+0

¡Muéstrenos un código! Particularmente porque estás usando javascript para enviar tus cargas. –

+0

Envíame tu ID de aplicación y una clave de blob de un blob que crees que se cargó correctamente pero no se invocó tu URL de éxito. –

+0

Identificación de la aplicación: maptoapp. 400 clave de blob (400 respuestas sucede cuando la posibilidad de subir fotos de alta resolución): -LupVC_gG2CaajOMBhJcQctXzsjI_MPu16ZdorDkGp-uK7c4o6BYqHxlXw AMIfv96gQvVD3xPl8IAUBZHwESNBAeeyZbxYWJD2BaxI688GkwNJXR6Lg7yx7pX8efb16YskBE7ZUVGYuUkXwSSXJ3uko6OnGKO79EuC 503 clave de blob (503 respuestas sucede especie de azar.con el mismo pic por lo general funciona correctamente): AMIfv957XZKBtl5C9RB19nntlrUi4bGfY8EPE8Rfidik0dlD5jPmeGgcLyqc2ye9WICIy063ZMoZRGIQkbVpCTM4EL7dUFzazWz2Irsn14iLKx2uBrJyYhl0qsrvRWxVa_KpMS6BGiH0N1c66XGPlkqoCo9jXPcBsg he subido dos archivos en este momento. – bebo

Respuesta

0

razón posible:

1 archivo grande la posibilidad de subir Usted (> 1 MB) y escribirlo todo. Debería escribirlo en portinal: 1 escritura = 1MB.

2 Su pedido toma más de 30 segundos - use back-end.

0

En este caso, el 503 es causado por errores cuando escribimos la información de carga en su almacén de datos. Como está utilizando el almacén de datos M/S, se esperan errores transitorios de vez en cuando. Le sugiero que convierta su aplicación a HRD para minimizar las posibilidades de que haya errores relacionados con la escritura de la información de carga en su almacén de datos.

El error 400 fue generado por la aplicación & está en los registros de la aplicación.

+0

Oh, no noté el registro de 400, lo siento. Después de una investigación más profunda, parece que el motivo es una IllegalArgumentException de ImagesServiceFactory.getImagesService(). GetServingUrl(), cuando el parámetro es una clave de blob válida de una imagen de alta resolución. Lamentablemente, ahora TODAS las cargas generan un 503, por lo que no puedo probarlo y mi aplicación está prácticamente bloqueada, es muy frustrante. – bebo

+0

get_serving_url solo funciona con imágenes <50 megapíxeles. Si las imágenes son más grandes, deberá reducirlas antes de llamar a get_serving_url. –

+0

No vi en absoluto esta restricción en el documento. Está escrito en alguna parte? – bebo

1

Este tema está siendo discutido en un billete GAE abierto por otro usuario con el mismo problema: https://code.google.com/p/googleappengine/issues/detail?id=7619 (por cierto, el sistema de seguimiento de errores tiene una función de "arranque", que le permite votar por el billete y recibir notificaciones)

+0

El ticket vinculado aquí es fijo. Mi aplicación experimenta un problema similar (pero usa el almacén de datos HRD), ya no tiene este problema. – user431640

0

Trate de usar Google Cloud Storage, ya que el servicio de almacén de blob tiene muchos problemas, por lo que Google está tratando de migrar usos de la gota de apoyo GCS

supongo que la resolución de la imagen no puede exceder de 8000 en el motor de aplicación blob store esa es la razón que causó.