Estoy intentando subir datos a Google App Engine (usando GWT). Estoy usando el widget FileUploader y el servlet usa un InputStream para leer los datos e insertarlos directamente en el almacén de datos. Al ejecutarlo localmente, puedo cargar archivos de gran tamaño con éxito, pero cuando lo despliego a GAE, estoy limitado por el tiempo de solicitud de 30 segundos. ¿Hay alguna forma de evitar esto? ¿O hay alguna forma de dividir el archivo en fragmentos más pequeños y enviar los fragmentos más pequeños?Google App Engine Carga de archivo grande
Respuesta
tendrías que cargarlo en otro servidor; creo que el tiempo de espera de 30 segundos no se puede evitar. Si hay una manera, por favor corrígeme! Me encantaría saber cómo!
Actualmente, GAE impone un límite de 10 MB en la carga de archivos (y el tamaño de la respuesta), así como límites de 1 MB en muchas otras cosas; por lo tanto, incluso si tuviera una conexión de red lo suficientemente rápida como para aumentar más de 10 MB en una ventana de 30 segundos, eso sería en vano. Google ha dicho (escuché a Guido van Rossum mencionar que ayer aquí en Pycon Italia Tre) que tiene planes para superar estas limitaciones en el futuro (al menos para los usuarios de GAE que pagan por uso para exceder las cuotas - no estoy seguro si el los planes se extienden a los usuarios de GAE que no están pagando, y generalmente necesitan aceptar cuotas más pequeñas para obtener su uso gratuito de GAE).
http://googleappengine.blogspot.com/2010/12/happy-holidays-from-app-engine-team-140.html – theosp
Lo más cercano que podría obtener sería dividirlo en fragmentos al almacenarlo en GAE y luego, cuando lo descargue, compilarlo emitiendo solicitudes AJAX por separado.
Estoy de acuerdo con dividir datos en blobs más pequeños y tengo dos tablas, una contiene los metadatos (nombre de archivo, tamaño, número de descargas, ... etc.) y otra contiene fragmentos, estos fragmentos están asociados a la tabla de metadatos por una clave foránea, creo que es factible ...
O cuando sube todos los trozos simplemente puede juntarlos en una sola mancha que tenga una tabla.
Pero el problema es que se necesita un cliente pesado para servir datos de fragmentación-, como un applet de Java, que debe ser firmado y la confianza de sus clientes para que pueda acceder al sistema de archivos local de
Si su solicitud se está quedando sin tiempo de solicitud, hay poco que puede hacer. Tal vez sus archivos sean demasiado grandes y tendrá que dividirlos en el cliente (con algo como Flash o Java o un marco de carga como pupload).
Una vez que obtiene el archivo en la aplicación, hay otro problema: las limitaciones del almacén de datos. Aquí tienes dos opciones:
Al utilizar el BlobStore tiene una 1 GB size limit y una special handler, called unsurprisingly BlobstoreUpload Handler que no se debe dar tiempo de espera problemas en subida.
También mira http://demofileuploadgae.appspot.com/ (sourcecode, source answer) que hace exactamente lo que estás preguntando.
Además, mira el resto de GWT-Examples.
El límite de tiempo de respuesta de 30 segundos solo se aplica a la ejecución del código. Por lo tanto, la carga del archivo real como parte del cuerpo de la solicitud queda excluida de eso. El temporizador solo se iniciará una vez que el cliente haya enviado por completo la solicitud al servidor y su código comience a manejar la solicitud enviada. Por lo tanto, no importa cuán lenta sea la conexión de su cliente.
Uploading file on Google App Engine using Datastore and 30 sec response time limitation
- 1. google app engine archivo de descarga python
- 2. Google app engine & CDN
- 3. App Engine Google archivo estático manipuladores ejemplo
- 4. Google App Engine Locking
- 5. Google App Engine
- 6. Google-app-engine NDB
- 7. Google App Engine: get_or_create()?
- 8. Google App Engine Geohashing
- 9. Google App Engine y dos.xml
- 10. ¿Qué tan rápido es Google App Engine?
- 11. appengine_config.py en Google App Engine
- 12. Google App Engine JDO 3
- 13. OpenID para Google App Engine
- 14. Google App Engine urlfetch para archivos POST
- 15. Google App Engine: autenticación personalizada
- 16. debería dejar Google App Engine?
- 17. ¿Alternativa para Google App Engine?
- 18. Google App Engine retraso extraño
- 19. web.py en Google App Engine
- 20. Django en Google App Engine
- 21. Google App Engine: appcfg.py rollback
- 22. Jinja2 en Google App Engine
- 23. Google App Engine Task Deadline
- 24. Google App Engine - Cookies seguras
- 25. eCommerce en Google App Engine
- 26. Google App Engine en Silverlight
- 27. Google App Engine y CORS
- 28. Google App Engine - incremento automático
- 29. Google App Engine modifyThreadGroup problema
- 30. Google App Engine: módulo JSON
Eso es lo que me temía. Supongo que no es tan malo ... Podría usar Amazon S3 para el almacenamiento. Supongo que eso simplificaría la parte de almacenamiento, pero sería bueno mantener todo en el mismo lugar. – user103920