= Hackney (sa pamamagitan ng HTTPost) humiling na hindi ibalik ang resulta kapag tumatakbo. = Kumusta, mayroon akong simpleng chat bot na nakasulat sa elixir. Ang isa sa aking usecase ay ang magpadala ng ilang query sa isang partikular na url. Inaasahan kong medyo mabagal ang tugon ng query server (ilang segundo). Isinulat ko ang aking code at sa aking koneksyon sa makina ang query code ay tumatakbo nang normal. Ngunit nang i-deploy ko ang aking aplikasyon sa isang VPS, ang query ay hindi nagbabalik ng tugon, hindi isang error o anumang mensahe This kinda drives me mad since I don't have any way to debug it since the call itself seems to be stuck at hindi bumabalik nang walang katapusan. Gumagana ang manu-manong pagpapatakbo ng curl sa container, gumagana ang kahilingan sa loob ng iex na nagre-remote sa running node, ngunit sa live na system ay hindi ito gumagana. Baka may tumulong sa akin? Nasa ibaba ang snippet ng code na pinag-uusapan: http_config = [ hackney: [pool: :tl], recv_timeout: 30_000, timeout: 30_000 ] na may {: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(katawan) ay nagtatapos sa resulta |>IO.inspect(label: :result) I-edit: Idinagdag ko ang kumakatawan sa linya ng inspeksyon. Minsan gumagana nang normal ang snippet na ito minsan hindi. Nang i-host ko ang program na ito sa black friday dirt murang dedikadong VPS ng kaibigan ko, hindi ito nagkaroon ng ganitong problema. Ngunit noong lumipat ako sa Vultr ay may ganitong problema. Sinubukan ko na rin ang ibang VPS provider na ginamit ko noon (ramnode) at may parehong problema Ang unang bagay na tumalon sa akin ay ang iyong with statement ay walang ibang sugnay upang hindi mo mahuli kung saan ito nabigo Subukang magdagdag ng iba at tugma ng pattern sa {:error, reason} tuple at isulat ito upang mag-log gamit ang sth tulad ng `Logger.error("Failed http post: #{inspect error Dapat mong makita kung bakit ito nabigo p.s. marahil ito ay gumagana sa isang remote na shell sa iyong lokal na sistema dahil sa network call na ginagawa sa lokal na makina (gumana sa remoting node) sa halip na sa deploy server. Upang matiyak na ang tawag sa network ay nangyayari sa malayong server, gumawa ng proseso sa remote na node (Node.spawn, hal.) na gumagawa ng http na tawag Ah, pasensya na hindi sinasabi ng snippet ang buong kuwento, ngunit pagkatapos nito, anuman ang mangyari mayroon akong linya ng logger na nagsasabi na ang command ay tapos nang tumakbo, at sa huli kung ang resulta ay {:error, _ } Ni-log ko ito. Ngunit sa aking kaso ang linya na nagsasabi sa pag-andar ay tapos na sa pagtakbo ay hindi nakakakuha ng tawag, ito ay tulad ng kahilingan sa pag-post na natigil sa paghihintay na kamay ay hindi na bumalik Gumagamit ako ng mga release, at pinapatakbo ko ang release binary remote sa deploy server upang kumonekta sa kasalukuyang tumatakbong node.