Heroku的错误时,它的Python实例:“连接被拒绝”
蟒蛇成功启动和Heroku的应用程序被套牢“监听端口5000”中,它应该由该server.py
:Heroku的错误时,它的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)。
希望有所帮助。