= Hackney-begäran (via HTTPost) returnerar inte resultat när den körs. = Hej, jag har en enkel chattbot skriven i elixir. En av mina användningsområden är att skicka en fråga till en viss url. Jag förväntade mig att frågeservern skulle svara lite långsamt (några sekunder). Jag har skrivit min kod och i min maskinanslutning körs frågekoden normalt. Men när jag distribuerade min applikation till en VPS, returnerar frågan bara inget svar, inte ett fel eller något meddelande Detta gör mig lite galen eftersom jag inte har något sätt att felsöka det eftersom själva anropet verkar ha fastnat och inte återkommer på obestämd tid. Att köra curl manuellt i behållaren fungerar, att köra begäran inuti iex som fjärrstyr den löpande noden fungerar, men i livesystemet fungerar det inte. Någon som kan hjälpa mig kanske? Nedan är kodavsnittet i fråga: http_config = [ hackney: [pool: :tl], recv_timeout: 30_000, timeout: 30_000 ] med {:ok, body}<- Jason.encodesrc"=>fråga {: ok, %HTTPoison.Response{body: body}}<- HTTPoison.post(url, body,http_config), {:ok, result"=>resultat, "src_lang"=>src_lang}}<- Jason.decode(body) do result end |>IO.inspect(label: :result) Edit: Jag lade till den representerande inspektionsraden. Ibland fungerar det här utdraget normalt ibland inte. När jag var värd för det här programmet i min väns Black Friday dirt cheap dedikerade VPS hade det aldrig det här problemet. Men när jag flyttade till Vultr har jag det här problemet. Jag har också provat på en annan VPS-leverantör som jag använde tidigare (ramnode) och har samma problem Det första som hoppar upp på mig är att ditt med uttalande inte har någon annan klausul så du kommer inte att fånga var det misslyckas Prova att lägga till en annan och mönstermatchning på {:error, reason} tuple och skriv det till logg med sth som `Logger.error("Failed http post: #{inspect error Du bör då kunna se varför det misslyckas p.s. det fungerar förmodligen på ett fjärrskal på ditt lokala system på grund av att nätverksanropet görs på den lokala maskinen (kör fjärrnoden) snarare än på distributionsservern. För att säkerställa att nätverksanropet sker på fjärrservern, skapa en process på fjärrnoden (t.ex. Node.spawn) som gör http-anropet Ah jag är ledsen att utdraget inte berättar hela historien, men efter det, oavsett vad som händer, har jag en loggerrad som talar om att kommandot har körts klart, och i slutändan om resultatet är {:error, _ } Jag loggar det. Men i mitt fall får raden som talar om att funktionen har körts färdig aldrig samtal, precis som att postbegäran bara fastnade och väntar återvände aldrig Jag använder versioner, och jag kör den binära versionen av releasen på distributionsservern för att ansluta till den aktuella noden som körs.