= La requête Hackney (via HTTPost) ne renvoie pas de résultat lors de l'exécution. = Salut, j'ai un simple chat bot écrit en élixir. L'un de mes cas d'utilisation consiste à envoyer une requête à une URL particulière. Je m'attendais à ce que le serveur de requêtes réponde un peu lentement (quelques secondes). J'ai écrit mon code et dans ma connexion machine, le code de requête s'exécute normalement. Mais lorsque j'ai déployé mon application sur un VPS, la requête ne renvoie tout simplement pas de réponse, ni d'erreur ni de message. Cela me rend un peu fou car je n'ai aucun moyen de le déboguer puisque l'appel lui-même semble être bloqué et ne revient pas indéfiniment. L'exécution manuelle de curl dans le conteneur fonctionne, l'exécution de la requête à l'intérieur de iex qui éloigne le nœud en cours d'exécution fonctionne, mais dans le système en direct, cela ne fonctionne pas. Quelqu'un pourrait m'aider peut-être ? Ci-dessous l'extrait de code en question : http_config = [ hackney: [pool: :tl], recv_timeout: 30_000, timeout: 30_000 ] with {:ok, body}<- Jason.encodesrc"=>query {: ok, %HTTPoison.Response{body : body}}<- HTTPoison.post(url, body,http_config), {:ok, result"=>result, "src_lang"=>src_lang}}<- Jason.decode(body) do result end |>IO.inspect(label: :result) Edit : j'ai ajouté la ligne d'inspection représentative. Parfois, cet extrait s'exécute normalement, parfois non. Lorsque j'ai hébergé ce programme dans le VPS dédié du vendredi noir de mon ami, il n'a jamais eu ce problème. Mais quand j'ai déménagé à Vultr, j'ai eu ce problème. J'ai également essayé sur un autre fournisseur VPS que j'ai utilisé dans le passé (ramnode) et j'ai le même problème La première chose qui me saute aux yeux est que votre instruction with n'a pas de clause else donc vous ne comprendrez pas où elle échoue Essayez d'ajouter un autre et une correspondance de modèle sur le {:error, reason} tuple et l'écrire dans le journal avec sth comme `Logger.error("Failed http post: #{inspect error Vous devriez alors être en mesure de voir pourquoi il échoue p.s. cela fonctionne probablement sur un shell distant sur votre système local car l'appel réseau est effectué sur la machine locale (exécutant le nœud distant) plutôt que sur le serveur de déploiement. Pour vous assurer que l'appel réseau se produit sur le serveur distant, lancez un processus sur le nœud distant (Node.spawn, par exemple) qui effectue l'appel http Ah, je suis désolé que l'extrait ne raconte pas toute l'histoire, mais après cela, quoi qu'il arrive, j'ai une ligne d'enregistrement qui indique que la commande a fini de s'exécuter, et à la fin si le résultat est {:error, _ } Je le connecte. Mais dans mon cas, la ligne qui indique que la fonction a fini de s'exécuter ne reçoit jamais d'appel, tout comme la demande de publication juste bloquée en attente, la main n'est jamais revenue J'utilise des versions et j'exécute la version binaire à distance sur le serveur de déploiement pour me connecter au nœud en cours d'exécution.