如何在我的views.py
中访问烧瓶主声明的对象 from flask_restful import Resource, request
from flask_jwt_extended import jwt_required, get_jwt_identity, create_access_token
from datetime import timedelta
import string
import views
import paho.mqtt.client as mqtt
#import client
from run import api,app
def startup():
client = mqtt.Client(client_id=" ", clean_session=True, userdata=None,transport="tcp")
global client
client.on_connect = on_connect
client.on_message = on_message
#client.message_callback_add("SQT/CAP/REG/MODELNO/SLNO",send_command)
#client.message_callback_add("SQT/CAP/+/+/DAT",data_receive)
client.username_pw_set('dave','sectorqube')
#client.tls_set(ca_certs="ssl2-master/server.crt", certfile="ssl2-master/ca.crt", keyfile="ssl2-master/ca-nopass.key", cert_reqs=ssl.CERT_REQUIRED, tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None)
#client.tls_insecure_set(True)
client.connect("ec2-13-127-241-50.ap-south-1.compute.amazonaws.com",1883)
client.loop_start()
if __name__ == "__main__":
views.startup()
app.run(threaded=True)
当我尝试从views.py访问全局变量时,它显示名称错误
from flask_restful import Resource, request
from datetime import timedelta
import string
import paho.mqtt.client as mqtt
from flask_restful import reqparse
import json
import ssl
def comand_off():
topic="DEVICE/COMMAND"
print(client.publish(topic,"OFF"))
return {"success":True}
我得到的错误是
print(client.publish(topic,“ ON”))NameError:名称“ client”不是 定义
我使用gunicorn --bind 0.0.0.0:5000 resources:app
运行答案 0 :(得分:0)
如果您的主脚本名为main.py,则可以
import main
然后使用
在views.py中引用它main.client
但是,客户端应在startup
范围之外声明,例如,将以下内容放在文件顶部:
client = None
然后在startup