= Hackney (HTTPost aracılığıyla) isteği çalışırken sonuç döndürmüyor. = Merhaba, iksirle yazılmış basit bir sohbet botum var. Kullanım durumlarımdan biri, belirli bir URL'ye bazı sorgular göndermek. Sorgu sunucusunun biraz yavaş (birkaç saniye) yanıt vermesini bekliyordum. Kodumu yazdım ve makine bağlantımda sorgu kodu normal şekilde çalışıyor. Ancak uygulamamı bir VPS'ye dağıttığımda sorgu herhangi bir hata veya mesaj değil, yanıt döndürmüyor Çağrının kendisi takılıp kaldığından ve süresiz olarak geri dönmediğinden dolayı hata ayıklamanın bir yolu olmadığından bu beni biraz deli ediyor. Konteynerde curl'u manuel olarak çalıştırmak işe yarıyor, çalışan düğümü uzaktan kumanda eden iex içinde isteği çalıştırmak işe yarıyor, ancak canlı sistemde çalışmıyor. Birisi bana yardım edebilir mi? Söz konusu kodun pasajı aşağıdadır: http_config = [ hackney: [pool: :tl], recv_timeout: 30_000, timeout: 30_000 ] ile {:ok, body}<- Jason.encodesrc"=>sorgu {: tamam, %HTTPoison.Response{body: body}}<- HTTPoison.post(url, body,http_config), {:ok, result"=>sonuç, "src_lang"=>src_lang}}<- Jason.decode(body) sonuç sonu yapar |>IO.inspect(label: :result) Düzenleme: Temsil eden inceleme satırını ekledim. Bazen bu kod parçası normal şekilde çalışıyor, bazen çalışmıyor. Bu programı arkadaşımın Kara Cuma'ya özel ucuz VPS'sinde barındırdığımda bu sorun hiç yaşanmadı. Ancak Vultr'a taşındığımda bu sorunla karşılaştım. Geçmişte kullandığım başka bir VPS sağlayıcısını da denedim (ramnode) ve aynı sorunu yaşadım Gözüme çarpan ilk şey, with ifadenizin else maddesinin olmaması, dolayısıyla nerede başarısız olduğunu anlayamayacağınızdır Bir else ve model eşleşmesi eklemeyi deneyin. {:error, Reason} tuple'ını kullanın ve bunu `Logger.error("Failed http post: #{inspect error) gibi bir şeyle günlüğe yazın O zaman neden başarısız olduğunu görebilmelisiniz not: ağ çağrısının dağıtım sunucusu yerine yerel makinede (uzak düğümü çalıştıran) yapılması nedeniyle muhtemelen yerel sisteminizdeki uzak bir kabukta çalışıyor. Ağ çağrısının uzak sunucuda gerçekleştiğinden emin olmak için uzak düğümde (Node.spawn, örneğin) http çağrısını yapan bir işlem oluşturun. Ah, üzgünüm pasaj tüm hikayeyi anlatmıyor, ama bundan sonra ne olursa olsun, komutun çalışmasının bittiğini söyleyen bir günlükçü satırım var ve sonunda sonuç {:error, _ ise } Günlüğe kaydediyorum. Ancak benim durumumda, işlevin çalışmasının bittiğini söyleyen satır hiçbir zaman çağrı almıyor, tıpkı gönderi isteğinin sıkışmış bekleme eli gibi asla geri dönmemesi gibi Sürümleri kullanıyorum ve çalışan geçerli düğüme bağlanmak için dağıtım sunucusunda yayın ikili programını uzaktan çalıştırıyorum.