==========
我实际上是IoT世界的学徒,我正在学习如何将应用程序(目前的python和js)集成到cloudfoundry或dockers等几个服务上!
我遇到了码头工人的问题,我按照官方码头教程部署了一个网络应用程序(幸运的是一个python / flask one:D)但是当我来到连接部分时我尝试部署我的应用程序时失败了并回复“连接已重置”
代码: 导入json 导入线程 导入线程 import io
from flask import Flask, render_template, request
from flask_socketio import SocketIO
# Global variables
app = Flask(__name__)
lock = threading.Semaphore(0)
IOCReplay.lock = lock
async_mode = None
socketio = SocketIO(app)
IOCReplay.socketio = socketio
@app.route("/")
def root():
return render_template('index.html')
@app.route("/dependencies")
def getDependencies():
data = ''
with open('./dependencies.json') as data_file:
data = json.load(data_file)
return json.dumps(data)
if __name__ == "__main__":
socketio.run(app, port=5000)
bash上的docker run -d -P guitest:1
6d95689601b8(...)
docker ps
CONTAINER ID IMAGE COMMAND
6d95689601b8 guitest:1 "python test.py"
CREATED STATUS PORTS NAMES
4 seconds ago Up 2 seconds 0.0.0.0:32771->5000/tcp loving_boyd
============== Dockerfile:好的
所以当我登录0.0.0.0:32771时,它说“连接已重置”
我从docker常见问题中看到,要解决此问题,我必须“更改[my] localhost上的服务配置,以便服务接受来自所有IP的请求”
这是我关于Stack Overflow的第一个问题,所以如果我犯了一个错误或者我有点困惑或者我的英语是垃圾,我道歉告诉我如何提高自己!
好吧,看起来我的代码中存在问题(因为教程中的培训/ webapp工作我怀疑可能存在本地主机冲突)但我甚至不确定我说的是什么哈哈
看起来flask-socketio对参数有点敏感所以我换成了: 进口口 来自flask导入Flask,render_template,request 来自flask_socketio导入SocketIO
@app.route('/')
def hello():
return render_template('index.html')
if __name__ == '__main__':
# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))
socketio.run(app, host='0.0.0.0', port=port)
我也删除了所有导入(线程,json,其他.py调用等) 现在,至少,它显示了一个非功能的GUI
我想我会讨论这个话题,因为我认为问题会再次出现,因为我会导入线程或数据库连接等奇特的东西@ _ @
答案 0 :(得分:1)
好的,我已经解决了所有问题! :d 我的经理会很高兴哈哈谢谢你@ n2o
所以是的,问题是socketio.run(app)的错误参数
我重新发布更正
一个:
from flask import Flask, render_template, request
from flask_socketio import SocketIO
# Code here #
if __name__ == "__main__":
socketio.run(app, port=5000)
修正:
import os
from flask import Flask, render_template, request
from flask_socketio import SocketIO
# code here #
if __name__ == "__main__":
port = int(os.environ.get('PORT', 5000))
socketio.run(app, host='0.0.0.0', port=port)