繁体   English   中英

传递 __init__ 参数并将其用作类中的变量

[英]Pass __init__ argument and use it as variable within the class

我正在尝试使用三个给定的__init__参数调用 AWS IoT 调用方法。 但不知何故,这些参数无法传递到类本身中。 正如您从给定的屏幕截图中看到的,在类中找不到变量ENDPOINT 任何帮助将不胜感激。

测试.py

import AWS_Publishing

AWSEndPoint = "ak2faelus7i02-ats.iot.ap-southeast-1.amazonaws.com"
AWSClientId = ""


publishMessage = AWS_Publishing(AWSEndPoint, AWSClientId, "Test")

publishMessage

AWS_Publishing.py

from awscrt import io, mqtt, auth, http
from awsiot import mqtt_connection_builder
import time as t
import json

class AWS_Publishing:
    def __init__(self, endpoint, client_id, topic):
        self.ENDPOINT = endpoint
        self.CLIENT_ID = client_id
        self.TOPIC = topic

    PATH_TO_CERT = "certs/device.pem.crt"
    PATH_TO_KEY = "certs/private.pem.key"
    PATH_TO_ROOT = "certs/Amazon-root-CA-1.pem"
    MESSAGE = "Hello World"
    RANGE = 20


# Spin up resources
    event_loop_group = io.EventLoopGroup(1)
    host_resolver = io.DefaultHostResolver(event_loop_group)
    client_bootstrap = io.ClientBootstrap(event_loop_group, host_resolver)
    mqtt_connection = mqtt_connection_builder.mtls_from_path(
        endpoint=ENDPOINT,
        cert_filepath=PATH_TO_CERT,
        pri_key_filepath=PATH_TO_KEY,
        client_bootstrap=client_bootstrap,
        ca_filepath=PATH_TO_ROOT,
        client_id=CLIENT_ID,
        clean_session=False,
        keep_alive_secs=6
    )

将“端点”传递给“端点”

截屏

谢谢你们的帮助。 我设法以某种方式解决了这个问题。 我没有创建一个类,而是创建了一个函数。

测试.py

import AWS_Publishing

AWSEndPoint = "ak2faelus7i02-ats.iot.ap-southeast-1.amazonaws.com"
AWSClientId = "test"
Topic = "Testing"

publishAWS = AWS_Publishing.publish(AWSEndPoint, AWSClientId, Topic)

publishAWS

AWS_Publishing.py

from awscrt import io, mqtt, auth, http
from awsiot import mqtt_connection_builder
import time as t
import json

def publish(ENDPOINT, CLIENT_ID, TOPIC):
    PATH_TO_CERT = "certs/device.pem.crt"
    PATH_TO_KEY = "certs/private.pem.key"
    PATH_TO_ROOT = "certs/Amazon-root-CA-1.pem"
    MESSAGE = "Hello World"
    RANGE = 20

    event_loop_group = io.EventLoopGroup(1)
    host_resolver = io.DefaultHostResolver(event_loop_group)
    client_bootstrap = io.ClientBootstrap(event_loop_group, host_resolver)
    mqtt_connection = mqtt_connection_builder.mtls_from_path(
        endpoint=ENDPOINT,
        cert_filepath=PATH_TO_CERT,
        pri_key_filepath=PATH_TO_KEY,
        client_bootstrap=client_bootstrap,
        ca_filepath=PATH_TO_ROOT,
        client_id=CLIENT_ID,
        clean_session=False,
        keep_alive_secs=6
    )
    print("Connecting to {} with client ID '{}'...".format(
        ENDPOINT, CLIENT_ID))
    # Make the connect() call
    connect_future = mqtt_connection.connect()
    # Future.result() waits until a result is available
    connect_future.result()
    print("Connected!")
    # Publish message to server desired number of times.
    print('Begin Publish')
    for i in range(RANGE):
        data = "{} [{}]".format(MESSAGE, i + 1)
        message = {"message": data}
        mqtt_connection.publish(topic=TOPIC, payload=json.dumps(
            message), qos=mqtt.QoS.AT_LEAST_ONCE)
        print("Published: '" + json.dumps(message) +
              "' to the topic: " + TOPIC)
        t.sleep(0.1)
    print('Publish End')
    disconnect_future = mqtt_connection.disconnect()
    disconnect_future.result()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM