Heroku的错误时,它的Python实例:“连接被拒绝”

问题描述:

蟒蛇成功启动和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:如果端口作为标志传递连接被拒绝

相同。

有谁知道到底为什么发生这种情况?

非常感谢您

请记住,你的应用程序绑定端口是一样的端口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)。

希望有所帮助。