2013-08-21 6 views
0

저는 처음으로 Heroku에 Python 플라스크 웹 응용 프로그램을 원격 배포하려고했지만 물론 몇 가지 문제가 있습니다.

2013-08-21T00:12:55.985496+00:00 heroku[web.1]: Starting process with command `python   geodesicDistance.py` 
2013-08-21T00:12:57.326395+00:00 app[web.1]: * Running on http://127.0.0.1:12176/ 
2013-08-21T00:12:57.326395+00:00 app[web.1]: * Restarting with reloader 
2013-08-21T00:13:56.914333+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process  failed to bind to $PORT within 60 seconds of launch 
2013-08-21T00:13:56.914595+00:00 heroku[web.1]: Stopping process with SIGKILL 
2013-08-21T00:13:58.185305+00:00 heroku[web.1]: Process exited with status 137 
2013-08-21T00:13:58.205874+00:00 heroku[web.1]: State changed from starting to crashed 
2013-08-21T00:18:23.999482+00:00 heroku[router]: at=error code=H10 desc="App crashed"  method=GET path=/ host=stormy-sands-9363.herokuapp.com fwd="93.46.195.73" dyno= connect= service= status=503 bytes= 

나는 그것이 포트 문제입니다 믿고

<script type="text/javascript"> 
    function checkGeolocation() { 
     if (navigator.geolocation) { 
      refresh(); 
     } else { 
      $('#results')[0].innerHTML = "<p>Your browser doesn't support geolocation <br /></p>"; 
       } 
     } 

     function getDistance(position) { 
      url = 'http://127.0.0.1:5000/geodesicDistance'; 
      query =position.coords.latitude.toString()+','+position.coords.longitude.toString(); 
        $.get(url, {'q': query},function(data) { 
         $('#results .distance')[0].innerHTML = Math.round(data['result']['distance']*1000)/1000; 

        }) 
       } 

     function handleError(error) { 
     alert(error.message); 
     } 

     function refresh() { 
      navigator.geolocation.getCurrentPosition(getDistance,handleError); 
     } 

     $(document).ready(function(){ 
      checkGeolocation(); 
      }); 
</script> 

이 Heruku가 로그에 따라 제공하는 오류입니다 :

# server settings 
HOST = '127.0.0.1' 
PORT = int(os.environ.get('PORT', 5000)) 
DEBUG_MODE = True 
... 
#functions definition 
... 
app = Flask(__name__) 

@app.route("/geodesicDistance") 
def geodesicDistance(): 
    t_start = time.time() 
    query = parse_query(request.args) 
    if query: 
     position = geocode_address(query) 
     if (position) and (len(position[u'results'])>0): 
      lat = position[u'results'][0][u'geometry'][u'location'][u'lat'] 
      lng = position[u'results'][0][u'geometry'][u'location'][u'lng'] 
      response = create_response(200, 
             'Good query', 
             lat, 
             lng, 
             position[u'results'][0][u'formatted_address'], 
             get_distance(lat,lng) 
             ) 
     else: 
      response = create_response(400, 
             'Bad formed query', 
             '', 
             '', 
             '', 
             '') 
    else: 
     response = create_response(204, 
            'No query made', 
            givenAddress['lat'], 
            givenAddress['lng'], 
            'White Bear Yard, 144a Clerkenwell Road, London,        EC1R 5DF, UK', 
            0.0 
            ) 
    response['result']['elapsed'] = (time.time() - t_start)*1.0e3 
    http_response = make_response(json.dumps(response)) 
    http_response.headers['Content-type'] = 'application/json' 
    http_response.headers['Access-Control-Allow-Origin'] = '*' 
    return http_response 

if __name__=="__main__": 
    app.run(debug=DEBUG_MODE, host=HOST, port=PORT) 

그리고 내 자바 스크립트 : 내 파이썬 코드는 다음과 같습니다 원인은 내 자바 스크립트 코드의이 줄 일 수 있습니다.

url = 'http://127.0.0.1:5000/geodesicDistance'; 
,

내 Procfile Heroku가 (이 지역에서 일하고있어)

Web: python geodesicDistance.py 

어떤 조언과 정적 포트를 설정 할 수있는 가능성을 가지고 있지? 이 페이지 https://devcenter.heroku.com/articles/dynos를 보면

답변

1

당신이 할 수있는, 당신은 플라스크가 실행되는 포트를 지정할 수없는 경우에도, 당신은 Heroku가 환경 그래서 변수 $ PORT 를 설정하는 것을 볼 ("웹 동력계"검색) 적어도 $ PORT 변수에서 알 수 있습니다.

+0

문제는 잘못된 procfile 명령으로 인한 것 같습니다. 웹 : gunicorn geodesic 거리 : 앱 실행 중 – user2697881