2017-06-12 27 views
0

蟒蛇成功啓動和Heroku的應用程序被套牢「監聽端口5000」中,它應該由該server.pyHeroku的錯誤時,它的Python實例:「連接被拒絕」

(...) 
parser.add_argument('-p', '--port', type=int, default=5000, help='port number') 
parser.add_argument('--debug', action='store_true', help='enable debug mode') 
args = parser.parse_args() 

if args.debug: 
    app.debug = True 

app.run(host='0.0.0.0') 

該作品和heroku logs --tail顯示應用程序按預期開始。做curl -X POST https://APPNAME.herokuapp.com:5000/search -H "Content-Type: application/json" -d '{ "text": "some_text"}'(通知我加在URL中的端口),當我在Heroku上的應用停留在「Running on http://0.0.0.0:33507/ (Press CTRL+C to quit)

但是,這樣做的捲曲時,我的Heroku應用這樣curl -X POST https://APPNAME.herokuapp.com/search -H "Content-Type: application/json" -d '{ "text": "some_text"}'申請停止indefinetly

而且

(7)無法連接到APPNAME.herokuapp.com端口5000:如果端口作爲標誌傳遞連接被拒絕

相同。

有誰知道到底爲什麼發生這種情況?

非常感謝您

回答

0

請記住,你的應用程序綁定端口是一樣的端口Heroku的暴露到互聯網給你。 Heroku監聽http(端口80)和https(端口443)。所以你的curl命令應該忽略URL中的端口。

Heroku的路由層充當您的應用程序的代理,它應該綁定通過$PORT環境變量提供的端口。但是,您無法直接連接到該端口(通過擴展,您無法通過HTTP以外的任何協議連接到您的應用程序)。

另外,您發佈的代碼中存在一個小錯誤 - server.py接受--port參數,但您不會將它傳遞給run()方法。您需要將其更改爲app.run(host='0.0.0.0', port=args.port)。另外,請確保Procfile Web進程被定義爲web: python server.py --port $PORT,以便您綁定到Heroku預期的端口(不保證爲端口5000)。

希望有所幫助。