Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 烧瓶插座.io在螺纹中不工作_Python_Sockets_Flask - Fatal编程技术网

Python 烧瓶插座.io在螺纹中不工作

Python 烧瓶插座.io在螺纹中不工作,python,sockets,flask,Python,Sockets,Flask,我有一个python服务器,它运行一个线程并通过websocket发出信号: def read_serial(): while True: ... socketio.emit("fire", {'n': 1}, namespace='/test') app = Flask(__name__) app.config['SECRET_KEY'] = '32ed21l31f9031kd93' app.debug = True socketio = SocketIO(

我有一个python服务器,它运行一个线程并通过websocket发出信号:

def read_serial():
   while True:
      ...
      socketio.emit("fire", {'n': 1},  namespace='/test')


app = Flask(__name__)
app.config['SECRET_KEY'] = '32ed21l31f9031kd93'
app.debug = True
socketio = SocketIO(app)
...
@socketio.on('connect', namespace='/test')
def test_connect():
    emit('my response', {'data': 'Connected'})
...
if __name__ == '__main__':
    thread = Thread(target = read_serial)
    thread.start()
    socketio.run(app, use_reloader=True)
在客户端,我有下一个代码:

    var socket = io.connect('http://' + document.domain + ':' + location.port + "/test");

socket.on('fire', function(data){
    fireTimer(data.n);
});

连接正在工作,但没有按预期方式触发事件。

您的虚拟环境中是否安装了eventlet或gevent?如果是,哪一个?您是否在
read\u serial
功能中执行任何可能被阻塞的操作?这可能就是问题所在。@Miguel我也有同样的问题。我已经安装了eventlet。应用程序运行时已建立连接,但事件未建立连接fire@Zion用你的代码写一个单独的问题。正如我上面所说的,我的猜测是你正在做一些阻碍的事情,当你使用eventlet或gevent时,这些事情是不可能发生的,但是在没有看到你所做的事情之前,不能真正告诉你细节。@Miguel没关系,我让它工作了。这是一个重要的问题。我目前正在遵循您推荐的可伸缩文件夹结构,并使用应用程序工厂,似乎与导入存在一些冲突,但已解决。但现在的问题是。如果您需要执行
socketio.run(app)
to
run
the
app
当您在heroku时,如何执行该操作?@Zion on on heroku您必须使用gunicorn来运行服务器。请参阅Flask SocketIO文档。还要注意的是,目前版本19.x中存在一个可疑的gunicorn bug,它阻止websocket在Heroku中工作。gunicorn的18.0版本运行良好。