= طلب Hackney (عبر HTTPost) لا يُرجع النتيجة عند التشغيل. = مرحبًا ، لدي روبوت دردشة بسيط مكتوب بالإكسير. إحدى حالات الاستخدام الخاصة بي هي إرسال بعض الاستعلام إلى عنوان 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 "=>نتيجة،"src_lang "=>src_lang}}<- Jason.decode (body) لا تنتهي النتيجة |>IO.inspect (التسمية:: النتيجة) تعديل: أضفت سطر الفحص الذي يمثل. في بعض الأحيان يتم تشغيل هذا المقتطف بشكل طبيعي في بعض الأحيان لا يعمل. عندما استضفت هذا البرنامج في خادم VPS المخصص لصديقي يوم الجمعة الأسود الأوساخ الرخيصة ، لم تواجه هذه المشكلة مطلقًا. ولكن عندما انتقلت إلى Vultr يعاني من هذه المشكلة. لقد جربت أيضًا على مزود VPS آخر استخدمته في الماضي (ramnode) ولدي نفس المشكلة أول ما يقفز في وجهي هو أن عبارة with الخاصة بك لا تحتوي على شرط آخر ، لذا لن تدرك أين تفشل جرب إضافة رمز آخر وتطابق نمط على ملف {: error، reason} tuple واكتبها للتسجيل باستخدام شيء مثل `Logger.error ("فشل http post: # {فحص الخطأ يجب أن تكون قادرًا بعد ذلك على معرفة سبب فشلها ملاحظة. من المحتمل أنه يعمل على غلاف بعيد على نظامك المحلي بسبب اتصال الشبكة الذي يتم إجراؤه على الجهاز المحلي (تشغيل عقدة الاتصال عن بُعد) بدلاً من خادم النشر. للتأكد من حدوث مكالمة الشبكة على الخادم البعيد ، قم بإنشاء عملية على العقدة البعيدة (Node.spawn ، على سبيل المثال) التي تجعل استدعاء http آه ، أنا آسف ، المقتطف لا يروي القصة بأكملها ، ولكن بعد ذلك ، بغض النظر عما يحدث ، لدي سطر مسجل يخبرنا أن الأمر قد انتهى ، وفي النهاية إذا كانت النتيجة {: خطأ ، _ } أقوم بتسجيله. ولكن في حالتي ، فإن السطر الذي يخبرنا بأن الوظيفة قد انتهى تشغيلها ، لا تحصل على مكالمة ، تمامًا مثل طلب آخر عالق فقط في انتظار اليد ولم يعود أبدًا أنا أستخدم الإصدارات ، وأقوم بتشغيل الإصدار الثنائي البعيد على خادم النشر للاتصال بالعقدة الحالية قيد التشغيل.