= ہیکنی (ای ٹی ٹی پی اوسٹ کے ذریعے) درخواست جب چل رہی ہے تو نتیجہ واپس نہیں کرنا۔ = ہائے، میرے پاس ایک سادہ چیٹ بوٹ ہے جو ایلکسیر میں لکھا ہوا ہے۔ میرے استعمال کا ایک کیس کسی خاص یو آر ایل پر کچھ استفسار بھیجنا ہے۔ میں نے استفسار کرنے والے سرور سے کچھ سست (چند سیکنڈ) جواب دینے کی توقع کی۔ میں نے اپنا کوڈ لکھا ہے اور میرے مشین کنکشن میں استفسار کوڈ عام طور پر چل رہا ہے۔ لیکن جب میں نے اپنی درخواست کو VPS پر تعینات کیا، تو سوال صرف جواب نہیں دیتا، کوئی غلطی یا کوئی پیغام نہیں یہ مجھے دیوانہ بنا دیتا ہے کیونکہ میرے پاس اسے ڈیبگ کرنے کا کوئی طریقہ نہیں ہے کیونکہ ایسا لگتا ہے کہ کال خود ہی پھنس گئی ہے اور غیر معینہ مدت تک واپس نہیں آتی ہے۔ کنٹینر میں کرل کو دستی طور پر چلانے سے کام ہوتا ہے، 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"=>نتیجہ, "src_lang"=>src_lang}}<- Jason.decode(body) نتیجہ ختم کرتا ہے |>IO.inspect(label: :result) ترمیم کریں: میں نے نمائندگی کرنے والی معائنہ لائن کو شامل کیا۔ کبھی کبھی یہ ٹکڑا عام طور پر چلتا ہے کبھی کبھی ایسا نہیں ہوتا ہے۔ جب میں نے اپنے دوست کے بلیک فرائیڈے ڈارٹ سستے ڈیڈیکیٹڈ وی پی ایس میں اس پروگرام کی میزبانی کی تو اسے کبھی یہ مسئلہ نہیں ہوا۔ لیکن جب میں Vultr میں چلا گیا تو یہ مسئلہ ہے۔ میں نے ایک اور VPS فراہم کنندہ پر بھی کوشش کی ہے جسے میں نے ماضی میں استعمال کیا تھا (ramnode) اور ایک ہی مسئلہ ہے۔ پہلی بات جو مجھ پر چھلانگ لگاتی ہے وہ یہ ہے کہ آپ کے بیان کے ساتھ کوئی اور شق نہیں ہے لہذا آپ نہیں پکڑیں ​​گے کہ یہ کہاں فیل ہو رہا ہے۔ پر ایک اور اور پیٹرن میچ شامل کرنے کی کوشش کریں۔ {:error, reason} ٹوپل کریں اور اسے sth کے ساتھ لاگ کرنے کے لیے لکھیں جیسے `Logger.error("فیلڈ HTTP پوسٹ: #{انسپیکٹ ایرر پھر آپ کو یہ دیکھنے کے قابل ہونا چاہئے کہ یہ کیوں ناکام ہو رہا ہے۔ p.s یہ شاید آپ کے مقامی سسٹم پر ریموٹ شیل پر کام کرتا ہے کیونکہ نیٹ ورک کال مقامی مشین پر کی جا رہی ہے (ریموٹ نوڈ کو چلانا) بجائے ڈیپلائی سرور پر۔ اس بات کو یقینی بنانے کے لیے کہ ریموٹ سرور پر نیٹ ورک کال ہو رہی ہے، ریموٹ نوڈ (Node.spawn، مثال کے طور پر) پر ایک ایسا عمل شروع کریں جو HTTP کال کرتا ہے۔ آہ مجھے افسوس ہے کہ ٹکڑا پوری کہانی نہیں بتاتا، لیکن اس کے بعد، اس سے کوئی فرق نہیں پڑتا ہے کہ میرے پاس ایک لاگر لائن ہے جو بتاتی ہے کہ کمانڈ چلنا ختم ہو گیا ہے، اور آخر میں اگر نتیجہ {:error, _ ہے } میں لاگ ان کرتا ہوں۔ لیکن میرے معاملے میں وہ لائن جو یہ بتاتی ہے کہ فنکشن چلنا ختم ہو گیا ہے کبھی کال نہیں آتی ہے، یہ بالکل اسی طرح جیسے پوسٹ کی درخواست صرف انتظار کرنے والا ہاتھ کبھی واپس نہیں آیا۔ میں ریلیز کا استعمال کرتا ہوں، اور میں ریلیز بائنری ریموٹ کو ڈیپلائی سرور پر چلاتا ہوں تاکہ موجودہ نوڈ کو چل رہا ہو سے منسلک کیا جا سکے۔