= 실행 시 Hackney(HTTPost를 통해) 요청이 결과를 반환하지 않습니다. = 안녕하세요, 엘릭서로 작성된 간단한 챗봇이 있습니다. 내 사용 사례 중 하나는 특정 URL에 일부 쿼리를 보내는 것입니다. 쿼리 서버가 약간 느리게(몇 초) 응답할 것으로 예상했습니다. 내 코드를 작성했고 내 컴퓨터 연결에서 쿼리 코드가 정상적으로 실행 중입니다. 하지만 애플리케이션을 VPS에 배포했을 때 쿼리가 오류나 메시지가 아닌 응답을 반환하지 않습니다. 호출 자체가 멈춘 것처럼 보이고 무기한 반환되지 않기 때문에 디버깅할 방법이 없기 때문에 이것은 나를 미치게 합니다. 컨테이너에서 컬을 수동으로 실행하면 실행 중인 노드가 작동하는 원격 iex 내에서 요청이 실행되지만 라이브 시스템에서는 작동하지 않습니다. 누구든지 나를 도울 수 있습니까? 다음은 해당 코드의 스니펫입니다. http_config = [ hackney: [pool: :tl], recv_timeout: 30_000, timeout: 30_000 ] with {:ok, body}<- Jason.encodesrc"=>쿼리 {: ok, %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 절이 없기 때문에 어디에서 실패하는지 파악할 수 없다는 것입니다. 다른 항목을 추가하고 패턴 일치를 {:error, reason} 튜플 및 `Logger.error("Failed http post: #{inspect error 그러면 실패 이유를 확인할 수 있어야 합니다. 추신. 배포 서버가 아닌 로컬 시스템(원격 노드 실행)에서 수행되는 네트워크 호출로 인해 로컬 시스템의 원격 셸에서 작동할 수 있습니다. 네트워크 호출이 원격 서버에서 발생하는지 확인하려면 원격 노드(예: Node.spawn)에서 http 호출을 수행하는 프로세스를 생성합니다. 아 죄송합니다 스니펫이 전체 이야기를 말하지는 않지만 그 후 무슨 일이 있어도 명령 실행이 완료되었음을 알려주는 로거 라인이 있고 결과가 {:error, _ } 기록합니다. 하지만 내 경우에는 함수 실행이 완료되었음을 알리는 라인이 호출되지 않습니다. 게시 요청이 대기 중인 핸드가 반환되지 않은 것과 같습니다. 릴리스를 사용하고 배포 서버에서 원격 릴리스 바이너리를 실행하여 현재 실행 중인 노드에 연결합니다.