从外部callb访问应用程序上下文(配置)

2024-06-16 10:59:39 发布

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

我有一些代码通过initialize_callback中的IoTHub Device SDK设置回调,此时,它可以访问应用程序配置。但是,当调用device_twin_callback时,我在app.app_context()行上得到一个错误(RuntimeError: Working outside of application context.),或者在访问app.config时,我没有按app_context()

我不确定它是否与回调的设置方式(MQTT)有关,或者是否遗漏了一些内容

一个可行的方法是直接导入配置文件,但这似乎是Flask已经定义良好的app.config的反模式

from flask import current_app as app
from iothub_client import IoTHubClient
class Session():
    def __init__(self, device_connection_string):
        self.client = IoTHubClient(device_connection_string, IoTHubTransportProvider.MQTT)

    def device_twin_callback(self, update_state, payload, user_context):
        with app.app_context():
            print(app.config)

    def initialize_callback(self):
        print(app.config)
        self.client.set_device_twin_callback(self.device_twin_callback, 0)

Tags: fromimportselfclientconfigappdevicedef