= запит 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"=>результат, "src_lang"=>src_lang}}<- Jason.decode(body) do result end |>IO.inspect(label: :result) Редагувати: я додав відповідний рядок перевірки. Іноді цей фрагмент працює нормально, іноді ні. Коли я розміщував цю програму на спеціальному VPS-сервері мого друга в чорну п’ятницю, ніколи не було цієї проблеми. Але коли я перейшов на Vultr, у мене виникла ця проблема. Я також спробував іншого постачальника VPS, яким користувався раніше (ramnode), і у мене така сама проблема Перше, що мені впадає в очі, це те, що ваш оператор with не має пропозиції else, тому ви не зрозумієте, де він не працює Спробуйте додати збіг else і pattern на {:error, reason} кортеж і записати його в журнал за допомогою sth, наприклад `Logger.error("Помилка публікації http: #{помилка перевірки Тоді ви зможете зрозуміти, чому він не працює p.s. ймовірно, він працює на віддаленій оболонці у вашій локальній системі через те, що мережевий виклик виконується на локальній машині (на якій працює віддалений вузол), а не на сервері розгортання. Щоб переконатися, що мережевий виклик відбувається на віддаленому сервері, створіть процес на віддаленому вузлі (наприклад, Node.spawn), який здійснює http-виклик Ах, вибачте, фрагмент не розповідає всю історію, але після цього, що б не трапилося, у мене є рядок журналу, який повідомляє, що команду завершено, і в кінці, якщо результат {:error, _ } Я реєструю це. Але в моєму випадку рядок, який повідомляє, що функція завершила роботу, ніколи не отримує виклику, це так само, як запит на публікацію, що просто застряг, рука очікування не повернулася Я використовую випуски та запускаю віддалений бінарний файл випуску на сервері розгортання, щоб підключитися до поточного запущеного вузла.