= คำขอ Hackney (ผ่าน HTTPost) ไม่ส่งคืนผลลัพธ์เมื่อทำงาน = สวัสดี ฉันมีบอทแชทง่ายๆ ที่เขียนด้วย Elixir หนึ่งในกรณีการใช้งานของฉันคือการส่งข้อความค้นหาไปยัง URL เฉพาะ ฉันคาดว่าเซิร์ฟเวอร์แบบสอบถามจะตอบสนองช้าเล็กน้อย (ไม่กี่วินาที) ฉันได้เขียนรหัสของฉันแล้ว และในการเชื่อมต่อเครื่องของฉัน รหัสข้อความค้นหาก็ทำงานตามปกติ แต่เมื่อฉันปรับใช้แอปพลิเคชันของฉันกับ VPS ข้อความค้นหากลับไม่ตอบสนอง ไม่มีข้อผิดพลาดหรือข้อความใดๆ สิ่งนี้ทำให้ฉันคลั่งไคล้เพราะฉันไม่มีวิธีแก้ไขจุดบกพร่องใด ๆ เนื่องจากการโทรดูเหมือนจะค้างและไม่ส่งคืนอย่างไม่มีกำหนด การรัน curl ด้วยตนเองในคอนเทนเนอร์นั้นใช้งานได้ การรันการร้องขอภายใน iex ที่รีโมตโหนดที่กำลังรันนั้นใช้งานได้ แต่ในระบบที่ใช้งานจริงนั้นใช้งานไม่ได้ ใครก็ได้ช่วยฉันที ด้านล่างนี้เป็นตัวอย่างของโค้ดที่เป็นปัญหา: http_config = [ hackney: [pool: :tl], recv_timeout: 30_000, timeout: 30_000 ] กับ {:ok, body}<- Jason.encodesrc"=>แบบสอบถาม {: ตกลง %HTTPoison.Response{body: body}}<- HTTPoison.post(url, body,http_config), {:ok, result"=>result, "src_lang"=>src_lang}}<- Jason.decode(body) สิ้นสุดผลลัพธ์ |>IO.inspect(label: :result) แก้ไข: ฉันเพิ่มบรรทัดการตรวจสอบที่เป็นตัวแทน บางครั้งตัวอย่างนี้ทำงานตามปกติบางครั้งก็ไม่ทำงาน เมื่อฉันโฮสต์โปรแกรมนี้ใน VPS เฉพาะของ Black Friday Dirt ราคาถูกของเพื่อนฉัน มันไม่เคยมีปัญหานี้เลย แต่เมื่อฉันย้ายไป Vultr มีปัญหานี้ ฉันได้ลองใช้ผู้ให้บริการ VPS รายอื่นที่ฉันเคยใช้ในอดีต (ramnode) และมีปัญหาเดียวกัน สิ่งแรกที่ทำให้ฉันประหลาดใจก็คือคำสั่งของคุณไม่มีประโยคอื่น ดังนั้นคุณจะจับไม่ได้ว่ามันล้มเหลวตรงไหน ลองเพิ่มการจับคู่อื่นและรูปแบบบน {:error, reason} tuple และเขียนเพื่อบันทึกด้วย sth เช่น `Logger.error("Failed http post: #{inspect error จากนั้นคุณควรจะเห็นได้ว่าทำไมจึงล้มเหลว ปล. มันอาจจะทำงานบนเชลล์ระยะไกลบนระบบโลคัลของคุณเนื่องจากการเรียกเครือข่ายทำบนเครื่องโลคัล (รันโหนดรีโมต) มากกว่าบนเซิร์ฟเวอร์การปรับใช้ เพื่อให้แน่ใจว่าการเรียกเครือข่ายเกิดขึ้นบนเซิร์ฟเวอร์ระยะไกล ให้วางกระบวนการบนโหนดระยะไกล (Node.spawn เช่น) ที่ทำให้การเรียก http อา ฉันขอโทษที่ตัวอย่างไม่ได้บอกเรื่องราวทั้งหมด แต่หลังจากนั้น ไม่ว่าจะเกิดอะไรขึ้น ฉันก็มีบรรทัดตัวบันทึกที่บอกว่าคำสั่งทำงานเสร็จแล้ว และท้ายที่สุดหากผลลัพธ์คือ {:ข้อผิดพลาด, _ } ฉันเข้าสู่ระบบ แต่ในกรณีของฉัน บรรทัดที่บอกว่าฟังก์ชันทำงานเสร็จแล้วไม่เคยได้รับการเรียก มันเหมือนกับคำขอโพสต์ที่ติดค้างรอมือไม่กลับมา ฉันใช้รีลีส และเรียกใช้รีโมตไบนารีรีลีสบนเซิร์ฟเวอร์การปรับใช้เพื่อเชื่อมต่อกับโหนดปัจจุบันที่กำลังทำงานอยู่