[RUBY-ON-RAILS] getaddrinfo는 : 노드 이름도 servname는 제공 여부를 알려
RUBY-ON-RAILSgetaddrinfo는 : 노드 이름도 servname는 제공 여부를 알려
나는 맥 OS X 10.6을 실행하는 컴퓨터에 배포하고있는 루비 레일에 응용 프로그램이 있습니다. 문제가 발생 코드는 delayed_job에 의해 실행됩니다. 이 delayed_job를 통해 실행하면 문제가 발생합니다. 내가 콘솔 (레일 콘솔 생산) 내에서 실행하거나 컬을 통해 직접 API를 호출하는 경우, 그것은 아무 문제없이 작동합니다. 또한, 전체 프로세스 내 개발 환경에서 문제없이 작동합니다.
기본적으로, 코드는 한 곳에서 작동하지만, 일에이 곳에 어떤 이유로 실패합니다. 내가 검색하고 볼 수있는 몇 가지 자원을하지만, 제안 중 어느 것도 적용되지 또는 차이를했습니다. 내가 서버에 로그인하여 명령을 실행하면, 모든 작동합니다. 하지만 카피 스트라 노에 의해 시작 그들이 실행되는 몇 가지 이유 /, 그것은 작동하지 않습니다.
어떤 도움도 대단히 감사합니다.
주의 사항 :
암호:
class CallApi < Struct.new(:num)
def perform
log "Entering perform"
apinum = num || 5
log "ApiNum = #{apinum}"
results = attempt(2,10) do
ActiveSupport::JSON.decode(RestClient.get(API_URL, {:params => {:apinum => apinum}}))
end
log "Results retrieved. (count: #{results.count})"
end
def log(message)
Delayed::Worker.logger.info "[CallApi] #{Time.now} - #{message}"
end
end
환경 구성 (참고 : URL은 있지만, 실제와 동일한 형태의, 가짜) :
API_URL = "http://api.example.org/api_endpoint"
# Originally, I had "http://" before the beginning, but found a
# post mentioning that Net::Http.start didn't like that.
# So I tried it both ways.
# The same error occurs regardless of if the "http://" is there.
오류가 발생하는 경우 전화 :
RestClient.get(API_URL, {:params => {:apinum => apinum}})
오류:
getaddrinfo: nodename nor servname provided, or not known
/Users/api/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/net/http.rb:644:in `initialize'
/Users/api/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/net/http.rb:644:in `open'
/Users/api/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/net/http.rb:644:in `block in connect'
/Users/api/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/timeout.rb:44:in `timeout'
/Users/api/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/timeout.rb:87:in `timeout'
/Users/api/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/net/http.rb:644:in `connect'
/Users/api/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/net/http.rb:637:in `do_start'
/Users/api/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/net/http.rb:626:in `start'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/rest-client-1.6.1/lib/restclient/request.rb:166:in `transmit'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/rest-client-1.6.1/lib/restclient/request.rb:60:in `execute'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/rest-client-1.6.1/lib/restclient/request.rb:31:in `execute'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/rest-client-1.6.1/lib/restclient.rb:68:in `get'
/private/var/www/project-gemset/releases/20101109002137/lib/call_api.rb:7:in `block in perform'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/attempt-0.2.0/lib/attempt.rb:70:in `attempt'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/attempt-0.2.0/lib/attempt.rb:114:in `attempt'
/private/var/www/project-gemset/releases/20101109002137/lib/call_api.rb:6:in `perform'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/backend/base.rb:77:in `invoke_job'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/worker.rb:118:in `block (2 levels) in run'
/Users/api/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/timeout.rb:57:in `timeout'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/worker.rb:118:in `block in run'
/Users/api/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/benchmark.rb:309:in `realtime'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/worker.rb:117:in `run'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/worker.rb:176:in `reserve_and_run_one_job'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/worker.rb:102:in `block in work_off'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/worker.rb:101:in `times'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/worker.rb:101:in `work_off'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/worker.rb:76:in `block (2 levels) in start'
/Users/api/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/benchmark.rb:309:in `realtime'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/worker.rb:75:in `block in start'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/worker.rb:72:in `loop'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/worker.rb:72:in `start'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/command.rb:100:in `run'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/command.rb:79:in `block in run_process'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/application.rb:250:in `call'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/application.rb:250:in `block in start_proc'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/daemonize.rb:199:in `call'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/daemonize.rb:199:in `call_as_daemon'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/application.rb:254:in `start_proc'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/application.rb:294:in `start'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/application_group.rb:159:in `block (2 levels) in start_all'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/application_group.rb:158:in `fork'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/application_group.rb:158:in `block in start_all'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/application_group.rb:157:in `each'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/application_group.rb:157:in `start_all'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/controller.rb:80:in `run'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons.rb:193:in `block in run_proc'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/cmdline.rb:112:in `call'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons/cmdline.rb:112:in `catch_exceptions'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/gems/daemons-1.1.0/lib/daemons.rb:192:in `run_proc'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/command.rb:78:in `run_process'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/command.rb:72:in `block in daemonize'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/command.rb:70:in `times'
/Users/api/.rvm/gems/ruby-1.9.2-p0@project-gemset/bundler/gems/delayed_job-aba9905764c2/lib/delayed/command.rb:70:in `daemonize'
script/delayed_job:5:in `'
해결법
-
==============================
1.DNS 확인이 실패 할 때 오류가 발생합니다. 명령 줄에서 API URL을 wget 용 (또는 컬) 할 수 있는지 확인합니다. DNS 서버를 변경하고 도움이 될 수 있습니다 테스트.
DNS 확인이 실패 할 때 오류가 발생합니다. 명령 줄에서 API URL을 wget 용 (또는 컬) 할 수 있는지 확인합니다. DNS 서버를 변경하고 도움이 될 수 있습니다 테스트.
-
==============================
2.오늘은 비슷한 상황에 달렸다 - 맥 OS X의 서버에 응용 프로그램을 배포, 그리고 외부 API에 액세스하려고 할 때 'getaddrinfo를'메시지를 수신. 그것은 원래 응용 프로그램을 시작하는 SSH 세션이 더 이상 활성 상태 일 때 오류가 발생하지 않는 것으로 나타났다. 당신이 당신의 서버에 ssh를 수동으로 명령을 실행 (또는 서버를 수동으로 실행)하면 모든 것이 완벽하게 작동하는 이유의 것을 - 당신이 살아있는 당신의 SSH 세션을 유지하는 한,이 오류가 발생하지 않습니다.
오늘은 비슷한 상황에 달렸다 - 맥 OS X의 서버에 응용 프로그램을 배포, 그리고 외부 API에 액세스하려고 할 때 'getaddrinfo를'메시지를 수신. 그것은 원래 응용 프로그램을 시작하는 SSH 세션이 더 이상 활성 상태 일 때 오류가 발생하지 않는 것으로 나타났다. 당신이 당신의 서버에 ssh를 수동으로 명령을 실행 (또는 서버를 수동으로 실행)하면 모든 것이 완벽하게 작동하는 이유의 것을 - 당신이 살아있는 당신의 SSH 세션을 유지하는 한,이 오류가 발생하지 않습니다.
이 버그의 OS X의 특질이 있는지 여부, 나는 확실하지 않다. 여기에 솔루션를 알려준 페이지입니다 - http://lists.apple.com/archives/unix-porting/2010/Jul/msg00001.html
모든 내가 할 'nohup을'을 사용하여 응용 프로그램을 실행하는 내 카피 스트라 노 작업을 업데이트했다 있었다. 변경 그래서
run "cd #{current_path} && RAILS_ENV=production unicorn_rails -c config/unicorn.rb -D"
에
run "cd #{current_path} && RAILS_ENV=production nohup unicorn_rails -c config/unicorn.rb -D"
나를 위해 트릭을했다.
이 사람을 도움이되기를 바랍니다 - 알아낼 꽤 고통이었다!
-
==============================
3.URL을 해석 할 때 계획 : 나머지 클라이언트의 위해 RESTClient는 HTTP를 필요로한다. 그것은 HTTP하지 않는 당신을 위해 인터넷 :: HTTP를 호출 부분이 있지만 나머지 클라이언트는 처리한다.
URL을 해석 할 때 계획 : 나머지 클라이언트의 위해 RESTClient는 HTTP를 필요로한다. 그것은 HTTP하지 않는 당신을 위해 인터넷 :: HTTP를 호출 부분이 있지만 나머지 클라이언트는 처리한다.
URL이 당신이 도달하려고하는 실제 하나입니다? example.org는 테스트 및 문서 및 도달하는 데 사용되는 유효한 도메인입니다; 나는 'API'와 'api_endpoint "부분이 실패하고 내가 그들에 도달 할 때 볼 것으로 예상 것입니다.
require 'socket' IPSocket.getaddress('example.org') # => "2620:0:2d0:200::10" IPSocket.getaddress('api.example.org') # => # ~> -:7:in `getaddress': getaddrinfo: nodename nor servname provided, or not known (SocketError) # ~> from -:7:in `<main>'
저는 여기에 컬을 사용하여 무엇을 얻을 :
greg-mbp-wireless:~ greg$ curl api.example.org/api_endpoint curl: (6) Couldn't resolve host 'api.example.org' greg-mbp-wireless:~ greg$ curl example.org/api_endpoint <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL /api_endpoint was not found on this server.</p> <hr> <address>Apache Server at example.org Port 80</address> </body></html> greg-mbp-wireless:~ greg$ curl example.org <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <TITLE>Example Web Page</TITLE> </HEAD> <body> <p>You have reached this web page by typing "example.com", "example.net","example.org" or "example.edu" into your web browser.</p> <p>These domain names are reserved for use in documentation and are not available for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC 2606</a>, Section 3.</p> </BODY> </HTML>
-
==============================
4.나는 단순히 닫고 터미널을 다시 열어이 문제를 해결했습니다.
나는 단순히 닫고 터미널을 다시 열어이 문제를 해결했습니다.
-
==============================
5.내 컴퓨터 (맥 산 사자를) 다시 시작하고 문제 자체를 해결했습니다. 그것이 내가 생각하는 인터넷에서 연결이 끊어졌습니다 쉘 생각으로 할 필요가 뭔가.
내 컴퓨터 (맥 산 사자를) 다시 시작하고 문제 자체를 해결했습니다. 그것이 내가 생각하는 인터넷에서 연결이 끊어졌습니다 쉘 생각으로 할 필요가 뭔가.
어떤 명확한 방법으로 쉘을 다시 시작하면이 문제도 해결할 수 있습니다. 간단하게 작동하지 않았다 그러나 새로운 세션 / 창을 열어.
-
==============================
6.내가 로컬 호스트가 호스트로 설정이 어떻게 든 설정되지 않은 파일 확인 때 같은 오류가 발생했습니다. 127.0.0.1에 로컬 호스트를 설정하면 그것을 해결.
내가 로컬 호스트가 호스트로 설정이 어떻게 든 설정되지 않은 파일 확인 때 같은 오류가 발생했습니다. 127.0.0.1에 로컬 호스트를 설정하면 그것을 해결.
sudo vi /etc/hosts >> 127.0.0.1 localhost
-
==============================
7.이 문제를 방지하기 위해, 우리는 localhost 대신 127.0.0.1에 바인딩 할 수 있습니다 :
이 문제를 방지하기 위해, 우리는 localhost 대신 127.0.0.1에 바인딩 할 수 있습니다 :
빈은 / 서버 -b 127.0.0.1 레일
-
==============================
8.나는 레일이 오류는 관련이없는보고 있었다. 그것은 내 테스트가 너무 높았다 포트 (65535 이상)를 사용하려고했던 밝혀졌다.
나는 레일이 오류는 관련이없는보고 있었다. 그것은 내 테스트가 너무 높았다 포트 (65535 이상)를 사용하려고했던 밝혀졌다.
이 코드는 문제의 오류가 발생합니다
require 'socket' Socket.getaddrinfo("127.0.0.1", "65536")
-
==============================
9.나를 위해, 나는 실행에 RSpec에 테스트를 얻기 위해 내 local_env.yml 코드의 라인을 변경했다.
나를 위해, 나는 실행에 RSpec에 테스트를 얻기 위해 내 local_env.yml 코드의 라인을 변경했다.
나는 원래 가지고 있었다 :
REDIS_HOST : '반환'
그것을하는 변경 :
REDIS_HOST : '로컬 호스트'
시험은 벌금을 달렸다.
-
==============================
10.인터넷에 연결하면서 개발하는 동안 나는 오류가 발생했습니다. 그것이 그렇게 할 수 없을 때 숨 막혀 그래서 그러나, 나는 필요에 작업 한 웹 사이트는 다른 웹 사이트로 대화 할 수 있습니다. 인터넷에 연결 오류를 해결했습니다.
인터넷에 연결하면서 개발하는 동안 나는 오류가 발생했습니다. 그것이 그렇게 할 수 없을 때 숨 막혀 그래서 그러나, 나는 필요에 작업 한 웹 사이트는 다른 웹 사이트로 대화 할 수 있습니다. 인터넷에 연결 오류를 해결했습니다.
-
==============================
11.위의 모든 실패하면, UNIX 라인 엔딩으로 변환하거나 수행하려고 :
위의 모든 실패하면, UNIX 라인 엔딩으로 변환하거나 수행하려고 :
brew install dos2unix sudo dos2unix -c mac /private/etc/hosts
아마 호스트 인코딩이 잘못되었습니다.
도움이 되었기를 바랍니다
-
==============================
12.나는 갈퀴 DB를 실행하고이 문제를 가지고 있었다 : 만들 수 있습니다. 이 페이지는 DNS 문제로 저를 흘려 주기도한다. 내 VPN 연결을 확인하고이 어떤 이유로 연결이 끊어졌습니다 발견했다. 나는 다시 연결하고 이제 레이크는 차질없이 일했다.
나는 갈퀴 DB를 실행하고이 문제를 가지고 있었다 : 만들 수 있습니다. 이 페이지는 DNS 문제로 저를 흘려 주기도한다. 내 VPN 연결을 확인하고이 어떤 이유로 연결이 끊어졌습니다 발견했다. 나는 다시 연결하고 이제 레이크는 차질없이 일했다.
-
==============================
13.내 설정 / application.yml 나는이 변경되었습니다
내 설정 / application.yml 나는이 변경되었습니다
redis: url: "redis://redis:6379/0"
이에
redis: url: "redis://localhost:6379/0"
그것은 나를 위해 작동
from https://stackoverflow.com/questions/4132525/getaddrinfo-nodename-nor-servname-provided-or-not-known by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 당신의 Gemfile이 들러의 이전 버전을 필요로하는 경우 어떻게`install '이다 번들? (0) | 2020.03.01 |
---|---|
[RUBY-ON-RAILS] 액티브의 find_each 제한 및 주문과 함께 (0) | 2020.02.29 |
[RUBY-ON-RAILS] AWS S3 : 당신은 액세스를 시도하는 버킷은 지정된 엔드 포인트를 사용하여 해결해야 (0) | 2020.02.29 |
[RUBY-ON-RAILS] 루비 온 레일즈 버튼 아약스처럼 (0) | 2020.02.29 |
[RUBY-ON-RAILS] 레일에서 2.3.8 4.0으로 업그레이드 (0) | 2020.02.29 |