как получить доступ к переменной в основной функции колбы - PullRequest
0 голосов
/ 01 октября 2018

как я могу получить доступ к объекту, объявленному в flask main в моем файле 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' не определено

iзапустить с помощью gunicorn --bind 0.0.0.0:5000 resources: app

1 Ответ

0 голосов
/ 01 октября 2018

если ваш основной сценарий называется main.py, вы можете сделать

import main

Затем ссылаться на него в views.py с помощью

main.client

клиент должен быть объявлен вне startup область действия, например, поместите в начало файла следующее:

client = None

Затем присвойте ему значение в startup

...