= La solicitud de Hackney (a través de HTTPost) no devuelve el resultado cuando se ejecuta. = Hola, tengo un bot de chat simple escrito en elixir. Uno de mis casos de uso es enviar una consulta a una URL en particular. Esperaba que el servidor de consultas respondiera un poco lento (unos segundos). He escrito mi código y en la conexión de mi máquina, el código de consulta se ejecuta normalmente. Pero cuando implementé mi aplicación en un VPS, la consulta simplemente no devolvió una respuesta, ni un error ni ningún mensaje. Esto me vuelve un poco loco ya que no tengo ninguna forma de depurarlo ya que la llamada en sí parece estar atascada y no regresa indefinidamente. Ejecutar curl manualmente en el contenedor funciona, ejecutar la solicitud dentro de iex que controla remotamente el nodo en ejecución funciona, pero en el sistema en vivo no funciona. ¿Alguien podría ayudarme tal vez? A continuación se muestra el fragmento del código en cuestión: http_config = [ hackney: [pool: :tl], recv_timeout: 30_000, timeout: 30_000 ] with {:ok, body}<- Jason.encodesrc"=>consulta {: ok, %HTTPoison.Response{body: body}}<- HTTPoison.post(url, cuerpo,http_config), {:ok, resultado"=>resultado, "src_lang"=>src_lang}}<- Jason.decode(cuerpo) do result end |>IO.inspect(label: :result) Editar: agregué la línea de inspección representativa. A veces, este fragmento se ejecuta normalmente, a veces no. Cuando alojé este programa en el VPS dedicado y barato de Black Friday de mi amigo, nunca tuvo este problema. Pero cuando me mudé a Vultr tiene este problema. También probé con otro proveedor de VPS que usé en el pasado (ramnode) y tengo el mismo problema Lo primero que me llama la atención es que su declaración with no tiene otra cláusula, por lo que no notará dónde está fallando. Intente agregar un else y una coincidencia de patrón en el {: error, razón} tupla y escríbalo para iniciar sesión con algo como `Logger.error ("Publicación http fallida: # {inspeccionar error Entonces debería poder ver por qué está fallando. PD. probablemente funcione en un shell remoto en su sistema local debido a que la llamada de red se realiza en la máquina local (ejecutando el nodo remoto) en lugar de en el servidor de implementación. Para asegurarse de que la llamada de red se realice en el servidor remoto, genere un proceso en el nodo remoto (Node.spawn, por ejemplo) que realice la llamada http Ah, lo siento, el fragmento no cuenta toda la historia, pero después de eso, pase lo que pase, tengo una línea de registro que dice que el comando terminó de ejecutarse y, al final, si el resultado es {: error, _ } Lo registro. Pero en mi caso, la línea que dice que la función ha terminado de ejecutarse nunca recibe una llamada, es como si la solicitud de publicación simplemente se atascara esperando que la mano nunca regresara. Utilizo lanzamientos y ejecuto el control remoto binario de lanzamiento en el servidor de implementación para conectarme al nodo actual en ejecución.