【问题标题】:Flask RuntimeError: working outside of application contextFlask RuntimeError:在应用程序上下文之外工作
【发布时间】:2018-02-07 17:12:21
【问题描述】:

我想用 websocket 运行我的 Flask 应用程序。只要我开始我的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")    

【问题讨论】:

  • 请包含您收到的错误的完整堆栈跟踪。如果您解释 unipi_joiner() 函数的作用,它也会很有用。

标签: python flask callback


【解决方案1】:

joiner 函数以格式事件 data(json) 从传感器传递数据,我通过广播将其发送到我的网站。数据来自 2 个不同的来源(时间相关),并使用队列在 joiner 函数中连接在一起。这适用于 Flask 开发服务器。当我使用 eventlet 时, joiner.on_unipi_change(unipi_change) 不起作用并显示上下文错误。我用烧瓶中的数据测试了服务器,它工作正常。

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

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

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 2015-10-05
    • 1970-01-01
    • 2016-03-11
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2022-10-17
    相关资源
    最近更新 更多