Flask运行时错误:在应用程序上下文之外工作1

2024-06-25 22:45:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用websocket运行我的烧瓶应用程序。只要我启动我的joiner类(作为线程运行),然后想注册一个回调函数,一切似乎都没问题。这在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")    

Tags: eventuidatavalueondefchangestat
1条回答
网友
1楼 · 发布于 2024-06-25 22:45:07

joiner函数以格式event,data(json)传递来自传感器的数据,数据通过广播发送到我的网站。数据来自两个不同的源(与时间相关),并在joiner函数中使用队列连接在一起。这在Flask开发服务器上可以正常工作。当我使用eventlet时joiner.on_unipi_变更(unipi_change)不工作并显示上下文错误。我用flask内部的数据测试了服务器,它工作了。在

问:是否可以通过websocket将传感器数据传输到我的Flask服务器,然后从Flask服务器发送到我的网站。这将是非常有趣的,因为我将有不同的raspi3收集数据并发送到我的web服务器。在

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

相关问题 更多 >