Todas las llamadas a la API fallan después de la tercera llamada consecutiva …

Un usuario Pregunto ✅

WATYF

Estoy tratando de usar la API REST para actualizar automáticamente todos mis conjuntos de datos después de que sus fuentes de datos se actualicen todas las mañanas. Escribí un programa .NET que obtendrá la lista de conjuntos de datos, verificará quién los posee, si no soy yo, tomará posesión y establecerá la puerta de enlace en nuestra puerta de enlace local, y luego ejecutará la actualización para ese conjunto de datos. Como máximo, cada conjunto de datos podría requerir hasta tres llamadas a la API (sin contar la llamada original para obtener la lista de conjuntos de datos).

Mi problema es que después de ejecutar las tres primeras llamadas a la API, TODAS las llamadas posteriores fallan con el mensaje «La operación ha agotado el tiempo de espera». Esto fue con el tiempo de espera predeterminado de 100 segundos en WebRequest, y sucede al recorrer el programa.

No importa cuáles son las primeras tres llamadas O cuál es la siguiente llamada que falla (podría ser una llamada para tomar posesión, o configurar la puerta de enlace, o ejecutar una actualización … no hace ninguna diferencia). Por ejemplo, si los dos primeros conjuntos de datos ya son de mi propiedad, fallará en el intento de tomar posesión del tercer conjunto de datos (es decir, la cuarta llamada a la API después de la llamada a Obtener conjunto de datos y dos llamadas de actualización). Si el primero no es de mi propiedad, fallará en el paso para actualizarlo después de tomar posesión (es decir, la cuarta llamada a la API después de Obtener lista de conjunto de datos, Tomar posesión y Establecer puerta de enlace). Etcétera etcétera.

Probé varios escenarios diferentes y todos se desarrollaron de la misma manera: después de hacer mi tercera llamada, no importa cuál sea, todo el tiempo de descanso.

Si dejo de depurar mi programa y lo inicio de nuevo, puedo hacer tres llamadas más hasta que vuelva a fallar, por lo que no es un «límite diario» ni nada por el estilo. También he esperado mucho tiempo entre llamadas (particularmente cuando todavía estaba trabajando en el programa), por lo que no es como si estuviera ejecutando las llamadas demasiado juntas.

¿Alguien sabe qué podría estar causando esto?

WATYF

En respuesta a Eric_Zhang

Para que conste, encontré una solución temporal para esto hasta que solucionen este error: Cerrar el ConnectionGroup después de que se complete cada WebRequest.

Suponiendo que «wr» es su var HttpWebRequest, simplemente use esta línea después de llamar a wr.GetResponse.

wr.ServicePoint.CloseConnectionGroup (wr.ConnectionGroupName)

No más tiempos de espera después de la segunda llamada API POST.

WATYF

Bien, parece que esto solo afecta a las llamadas POST. Puedo ejecutar llamadas GET tantas veces como quiera, pero en la tercera llamada POST, siempre se agota el tiempo de espera. No debería haber incluido la llamada para obtener la lista de conjuntos de datos en mi recuento, ya que esa es una llamada GET, por lo que no es después de la tercera llamada API (en general) que obtengo tiempos de espera, sino en la tercera llamada POST .

En respuesta a WATYF


@WATYF escribió:

De acuerdo, esto parece afectar solo a las llamadas POST. Puedo ejecutar llamadas GET tantas veces como quiera, pero en la tercera llamada POST, siempre se agota el tiempo de espera. No debería haber incluido la llamada para obtener la lista de conjuntos de datos en mi recuento, ya que esa es una llamada GET, por lo que no es después de la tercera llamada API (en general) que obtengo tiempos de espera, sino en la tercera llamada POST .


@WATYF

Gracias por informar de este problema, pude reproducir un tiempo de espera similar en la tercera llamada POST. Voy a escalar esto internamente y publicaré si recibo alguna actualización.

WATYF

En respuesta a Eric_Zhang

@Eric_Zhang

¿Hay alguna solución mientras tanto? ¿Sabe por qué falla en la tercera llamada consecutiva en una instancia de un programa, pero funcionará nuevamente una vez que reinicie ese mismo programa? Estoy eliminando todos mis objetos, y cada llamada a la API usa una WebRequest única, así que estoy tratando de averiguar cómo sabe que la tercera llamada es de la misma instancia de un programa y la cuarta (después de un reinicio) no es.

En respuesta a WATYF


@WATYF escribió:

@Eric_Zhang

¿Hay alguna solución mientras tanto? ¿Sabe por qué falla en la tercera llamada consecutiva en una instancia de un programa, pero funcionará nuevamente una vez que reinicie ese mismo programa? Estoy eliminando todos mis objetos, y cada llamada a la API usa una WebRequest única, así que estoy tratando de averiguar cómo sabe que la tercera llamada es de la misma instancia de un programa y la cuarta (después de un reinicio) no es.


@WATYF

Todavía no tengo ninguna actualización y seguiré este hilo una vez que tenga información nueva. Gracias por su paciencia.

WATYF

En respuesta a Eric_Zhang

Para que conste, encontré una solución temporal para esto hasta que solucionen este error: Cerrar el ConnectionGroup después de que se complete cada WebRequest.

Suponiendo que «wr» es su var HttpWebRequest, simplemente use esta línea después de llamar a wr.GetResponse.

wr.ServicePoint.CloseConnectionGroup (wr.ConnectionGroupName)

No más tiempos de espera después de la segunda llamada API POST.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *