= Hackney (melalui HTTPost) meminta untuk tidak mengembalikan hasil semasa berjalan. = Hai, saya mempunyai bot sembang ringkas yang ditulis dalam elixir. Salah satu kes penggunaan saya ialah menghantar beberapa pertanyaan ke url tertentu. Saya menjangkakan pelayan pertanyaan akan bertindak balas agak perlahan (beberapa saat). Saya telah menulis kod saya dan dalam sambungan mesin saya kod pertanyaan berjalan seperti biasa. Tetapi apabila saya menggunakan aplikasi saya ke VPS, pertanyaan itu tidak memberikan respons, bukan ralat atau sebarang mesej Ini agak membuatkan saya marah kerana saya tidak mempunyai cara untuk menyahpepijatnya kerana panggilan itu sendiri nampaknya tersekat dan tidak kembali selama-lamanya. Menjalankan curl secara manual dalam bekas berfungsi, menjalankan permintaan di dalam iex yang mengawal nod berjalan berfungsi, tetapi dalam sistem langsung ia tidak berfungsi. Sesiapa boleh membantu saya mungkin? Di bawah ialah coretan kod yang dipersoalkan: http_config = [ hackney: [pool: :tl], recv_timeout: 30_000, timeout: 30_000 ] dengan {:ok, body}< - Jason.encodesrc"=>pertanyaan {:ok, %HTTPoison.Response{body: body}}< - HTTPoison.post(url, body,http_config), {:ok, result"=>result, "src_lang"=>src_lang}}< - Jason.decode(body) melakukan keputusan akhir |>IO.inspect(label: :result) Edit: Saya menambah baris pemeriksaan yang mewakili. Kadangkala coretan ini berjalan seperti biasa kadangkala tidak. Apabila saya menganjurkan program ini dalam VPS berdedikasi murah black friday dirt kawan saya, ia tidak pernah mengalami masalah ini. Tetapi apabila saya berpindah ke Vultr mempunyai masalah ini. Saya juga telah mencuba penyedia VPS lain yang saya gunakan pada masa lalu (ramnode) dan mempunyai masalah yang sama Perkara pertama yang menarik perhatian saya ialah pernyataan with anda tidak mempunyai klausa lain jadi anda tidak akan mengetahui di mana ia gagal Cuba tambah padanan lain dan corak pada {:error, reason} tuple dan tuliskannya untuk log dengan sth seperti `Logger.error("Failed http post: #{inspect error Anda sepatutnya dapat melihat mengapa ia gagal p.s. ia mungkin berfungsi pada cangkerang jauh pada sistem tempatan anda kerana panggilan rangkaian dilakukan pada mesin tempatan (menjalankan nod jarak jauh) dan bukannya pada pelayan penggunaan. Untuk memastikan panggilan rangkaian berlaku pada pelayan jauh, wujudkan proses pada nod jauh (Node.spawn, cth.) yang membuat panggilan http Ah, saya minta maaf coretan tidak menceritakan keseluruhan cerita, tetapi selepas itu, tidak kira apa yang berlaku saya mempunyai baris logger yang memberitahu bahawa arahan telah selesai dijalankan, dan pada akhirnya jika hasilnya adalah {:error, _ } Saya log ia. Tetapi dalam kes saya talian yang memberitahu fungsi telah selesai berjalan tidak pernah mendapat panggilan, ia sama seperti permintaan pos yang hanya tersekat tangan menunggu tidak pernah kembali Saya menggunakan keluaran, dan saya menjalankan alat kawalan jauh binari keluaran pada pelayan guna untuk menyambung ke nod semasa yang sedang berjalan.