python - 如何在烧瓶主函数中访问变量
问题描述
如何访问我的views.py中flask main中声明的对象
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: name 'client' is not defined
我使用 gunicorn --bind 0.0.0.0:5000 资源运行:app
解决方案
如果你的主脚本叫做 main.py,你可以这样做
import main
然后在views.py中引用它
main.client
客户端应该在startup
范围之外声明,例如将以下内容放在文件顶部:
client = None
然后给它赋值startup
推荐阅读
- python - 为什么.grid 在我尝试移动按钮时给我一个错误
- domain-driven-design - DDD 聚合存储库和缓存存储库
- sql - SQL - 航班停靠点
- java - Eclipse java调试在运行时无法编辑代码
- c# - 当前上下文中不存在名称“rb”?
- python - 将 pandas 表导入 tkinter 项目
- javascript - Discord Bot CommandFile 不是构造函数
- discord.py - discord.py - 如何制作一个在某个符号后接受所有单词的命令
- javascript - React 服务器端只渲染特定的路由
- git - git push:pack-objects 死于信号 11