已在烧瓶网络应用程序

时间:2017-01-02 14:09:10

标签: python docker flask

==========

各位大家好!

我实际上是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的第一个问题,所以如果我犯了一个错误或者我有点困惑或者我的英语是垃圾,我道歉告诉我如何提高自己!

感谢您的时间,祝您2017年好! :)

主题的演变

好吧,看起来我的代码中存在问题(因为教程中的培训/ 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

我想我会讨论这个话题,因为我认为问题会再次出现,因为我会导入线程或数据库连接等奇特的东西@ _ @

1 个答案:

答案 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)