2014-11-21 2 views
0

, 나는 내가 request.location하는 지오 코더 보석을 사용하는 페이지에 그 나타났습니다, 내 Heroku가 응용 프로그램은 종종 로그 내가geocoder 레일 보석의 request.location이 heroku에 너무 느립니다? 지난 주 동안

Geocoding API not responding fast enough (use Geocoder.configure(:timeout => ...) 

을했습니다 보여

Application Error 
An error occurred in the application and your page could not be served. Please try again in a few moments. 
If you are the application owner, check your logs for details. 

표시 전에는이 문제를 알지 못했지만 아마도 항상 거기에 있었을 것입니다. 단지 최근까지 문제가있는 페이지에 자주 액세스하지 못했습니다. 시간 초과와 페이지 액세스의 발생은 무작위로 보입니다.

그래서 난 내 설정/초기화/geocoder.rb에
Geocoder.configure(
    :timeout => 40 
) 

을 추가했다. 그 결과 페이지에 더 자주 액세스 할 수 있다고 생각하지만로드하는 데 종종 시간이 걸립니다.

저는 응용 프로그램 오류가 발생하지 않도록 이러한 페이지에 기본 우편 번호를 구현하고 있지만 장기적으로는 이상적이지 않습니다.

나는 request.location 시간이 알아,하지만 난 여전히 응용 프로그램 오류를 얻을 때 20016의 기본 우편 번호를 얻을 것으로 예상
if params[:search].present? 
    @events = Event.near(params[:search], params[:dist], order: 'distance') 
elsif user_signed_in? && current_user.address 
    @events = Event.near([current_user.latitude, current_user.longitude], 25, order: 'distance') 
elsif request.location 
    @events = Event.near([request.location.latitude, request.location.longitude], 25, order: 'distance') 
else 
    @events = Event.near(20016, 100, order: 'distance') 

을 시도했다.

다른 제안 사항이 있으십니까?

답변

1

Geocoder gem에 대한 시간 초과를 설정 한 경우, Heroku에 대한 각 요청에 대해 가질 수있는 기간 인 30 초 미만으로 설정해야합니다. 시간 제한을 40 초로 설정하면 IP Geolocation 서비스에 대한 지오 코더 요청이 40 초 후에 시간 초과됩니다. 그러나 Heroku가 이미 요청 시간을 초과하여 H12 어플리케이션 오류가 표시됩니다. 제한 시간을 30 초 미만으로 설정하면 최소한 기본 우편 번호를 확인해야합니다.

지오 코더 request.location 메소드는 기본 IP 지오 코딩 서비스 인 FreeGeoIP를 사용하여 요청 IP 주소를 지오 코딩합니다. 최근 몇 가지 문제가 발생한 것으로 보입니다 (2015 년 11 월). 다른 IP 서비스 (예 : Telize) 중 하나를 시도해도 문제가 도움이되는지 확인할 수 있습니다.

+0

답변 해 주셔서 감사합니다. Lukas! 어떤 시점에서 타임 아웃을 30으로 설정했지만 여전히 문제가있었습니다. 타임 아웃을 20으로 설정하고 위치를 "Washington, DC"로 바꿨습니다. 나는 20016이 위치에 대한 유효한 값이 아닐 수도 있다고 생각한다. 적어도 이제는 request.location과 "Washington, DC"를 사용하는 사이에 격렬 해지고 있습니다. – CrowdPublishTV

+0

그래, 나는 더 분명해야 했어. 지오 코더 시간 초과가 30으로 설정된 경우 요청의 총 시간이 30 초를 초과하므로 H12 시간 초과가 계속 표시됩니다. –