En una aplicación de Google App Engine que utiliza las siguientes líneas para leer una página de un sitio:¿Tiempo de espera de Google App Engine?
String Url="http://...",line,Result="";
URL url=new URL(Url+"?r="+System.currentTimeMillis());
BufferedReader reader=new BufferedReader(new InputStreamReader(url.openStream()));
while ((line=reader.readLine())!=null) { Result+=line+"\n"; }
reader.close();
pero me dio el siguiente error:
Uncaught exception from servlet
com.google.apphosting.api.DeadlineExceededException: This request (f5e2889605d27d42) started at 2011/09/07 03:20:41.458 UTC and was still executing at 2011/09/07 03:21:30.888 UTC.
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1037)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1326)
at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:276)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:82)
at com.google.appengine.tools.development.TimedFuture.get(TimedFuture.java:55)
at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:69)
at com.google.apphosting.runtime.ApiProxyImpl.doSyncCall(ApiProxyImpl.java:177)
at com.google.apphosting.runtime.ApiProxyImpl.access$000(ApiProxyImpl.java:56)
at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:150)
at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:148)
at java.security.AccessController.doPrivileged(Native Method)
Parece que tomó más tiempo de lo que le gustaría esperar, ¿qué puedo hacer si ese sitio es lento?
Este es un tiempo de espera de solicitud, que ocurre después de 30 segundos. Como las solicitudes de URLFetch están limitadas a 10 segundos, debe hacer más que solo esta llamada. ¿Qué estás haciendo? –
Sí, obtuve los contenidos de la página de 6 categorías y veo dónde se clasifica mi NMJava, por lo que tardó más tiempo en recorrer cada página para encontrar el nombre NMJava y calcula dónde se encuentra. – Frank
¿Ha considerado usar URLFetch asincrónico? Eso te permitirá hacer todas las solicitudes en paralelo. –