flask - 使用本地域名的烧瓶“连接被拒绝”
问题描述
我有烧瓶在我的 Raspi 上的守护进程中运行。
@app.route("/cmd",methods = ['POST', 'GET'])
def cmd():
if request.method == 'GET':
order_obj = request.args.to_dict(flat=True)
else:
order_obj = request.get_json(force=True)
response = jsonify(controller_obj.act_on_order(order_obj))
response.headers.add('Access-Control-Allow-Origin', '*')
return response
app.run(port=8087, debug=config.DEBUG, use_reloader=False)
当我运行这个应用程序时,我可以看到它正在侦听端口 8087:
pi@brs-tv:~/brs $ sudo netstat -lptu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost:8087 0.0.0.0:* LISTEN 4133/python
当我使用 localhost 远程登录到本地端口时,它工作正常。
pi@brs-tv:~/brs $ telnet localhost 8087
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /cmd
但是当我在本地远程登录到它的本地地址时,我得到连接被拒绝:
pi@brs-tv:~/brs $ telnet brs-tv.local 8087
Trying 127.0.1.1...
telnet: Unable to connect to remote host: Connection refused
这是 Rpi 的事情,还是 Flask 的事情?
解决方案
It turns out it is a Flask thing.
host (Optional[str]) – the hostname to listen on. Set this to '0.0.0.0' to have the server available externally as well. Defaults to '127.0.0.1' or the host in the SERVER_NAME config variable if present.
So, fixing my Flask run call:
app.run(host="0.0.0.0", port=config.CONTROLLERS[whoami]["port"],
debug=config.DEBUG, use_reloader=False)
Now, my port is listening to the rest of the world:
pi@brs-tv:~ $ sudo netstat -lptu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8087 0.0.0.0:* LISTEN 1213/python
I can also now connect from another machine:
Ricos-vt220:~ % telnet brs-tv.local 8087
Trying fe80::3d7:b64:bb26:14e0...
telnet: connect to address fe80::3d7:b64:bb26:14e0: Connection refused
Trying 192.168.86.29...
Connected to brs-tv.local.
Escape character is '^]'.
GET /cmd
推荐阅读
- jenkins - 将赛普拉斯与 Jenkins 集成
- elasticsearch - ElasticSearch 查询以填充或附加值到字段
- ios - 如何使用 React-Native 播放原生 ios Keyboard Touch 声音?
- c - c语言中goto语句的使用频率是多少?
- excel - 将 CSV(Excel 表)导入 SQLite?
- android - 如果登录,如何仅在导航抽屉上显示片段
- swift-nio - SwiftNIO:发送和接收 UDP 广播
- android - 如何在 ConstraintLayout 中放置背景形状?
- python - 简单的脚本是在数学中添加随机零?
- expo - 如何在开发过程中获取链接以重定向到 expo 应用程序