我写了一小段代码:
from flask import Flask
from flask_restful import Resource, Api
import subprocess
app = Flask(__name__)
api = Api(app)
class SlackReport(Resource):
def get(self):
subprocess.Popen(['python', 'ingestion_ice3_check.py'])
return 'Request submitted'
api.add_resource(SlackReport, '/slackReport')
if __name__ == '__main__':
app.run(debug=True)
如果我执行:
^{pr2}$服务器发送响应,但如果我从同一LAN中的另一台计算机执行相同的命令,则会收到一条“拒绝连接”消息
$ curl -X GET http://10.113.12.20:5000/slackReport
curl: (7) Failed to connect to 10.113.12.20 port 5000: Connection refused
如果我从本地主机请求资源,我可以看到来自服务器调试控制台的请求
127.0.0.1 - - [28/Sep/2017 18:15:02] "GET /slackReport HTTP/1.1" 200 -
但是,如果我从远程机器请求相同的资源,我可以看到端口上的数据包,但是flask服务器没有接收到任何信息。在
$ sudo tcpdump -i ens192 port 5000
18:17:53.132514 IP 10.113.12.25.37096 > tl020dash.commplex-main: Flags [S], seq 3147843104, win 14600, options [mss 1460,sackOK,TS val 822032144 ecr 0,nop,wscale 7], length 0
这是netstat命令的输出
sudo netstat -tnlp | grep :5000
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 21872/python
您正在本地主机(127.0.0.1)上运行服务,因此只有您的计算机可以访问它。如果你想运行Flask服务,让你的网络上的其他东西可以访问它,你可以在运行你的应用程序时设置一些关键字参数。您可能需要以提升的用户身份运行它,以便它能够绑定到该网络端口(10.113.12.20:5000)。
相关问题 更多 >
编程相关推荐