Flask RuntimeError:在应用程序上下文之外工作

时间:2018-02-07 17:12:22

标签: python flask callback

我想用websocket运行我的Flask应用程序。只要我开始我的木工类(以线程运行)然后想要注册回叫funktion,一切似乎都可以。这适用于烧瓶开发服务器。 因为我在Englisch不是很好,所以我有问题要理解Flask的背景问题。任何帮助将非常感谢

@socketio.on('change_R8', namespace='/fl')
def change_Relay8(R8_stat):
    if R8_stat == 'on':
        #print("Relay 8 on")
        ui.set_relay(8,1,0)
    elif R8_stat == 'off':
        #print("Relay 8 off")
        ui.set_relay(8,0,0) 

# Listen for SocketIO event that will change analog output

@socketio.on('change_ao', namespace='/fl')
def change_ao(ao_value):
    #print("setze ao auf: ", ao_value)
    ui.set_ao(ao_value)         

#- call back function from UniPi_joiner_class----------------------------

def unipi_change(event, data):
    #print("Webserver in: ",event,data)
    emit_to_all_clients(event, data)

# main program ----------------------------------------------------------    

if __name__ == "__main__":
    log.text("Flask Web-Server gestartet")
    print("Flask Web-Server gestartet")
    joiner = unipi_joiner("10.0.0.52",0)
    joiner.on_unipi_change(unipi_change)
    socketio.run(app, host='127.0.0.1', use_reloader=False, debug=False)
    log.text("Flask Web-Server beendet")    

1 个答案:

答案 0 :(得分:0)

joiner函数以格式化事件传递来自传感器的数据,数据(json),我通过广播发送到我的网站。数据来自2个不同的源(时间依赖),并使用队列在joiner函数中连接在一起。这适用于Flask开发服务器。当我使用eventlet时,joiner.on_unipi_change(unipi_change)不起作用并显示上下文错误。我使用烧瓶内的数据对服务器进行了测试,并且运行良好。

问题:是否可以通过websocket将传感器数据传送到我的Flask服务器,然后从烧瓶服务器传送到我的网站。这将是非常有趣的,因为我会有不同的Raspi 3收集数据并将其发送到我的网络服务器。

关于完整的堆栈跟踪,我需要一些指导(抱歉Flask初学者)