【发布时间】:2019-02-19 22:50:36
【问题描述】:
我在订阅某个主题时可能会遗漏一些东西,但不确定。下面是我的 iot python 订阅代码,它可以完美运行。 但是,如果我在没有订阅代码的情况下运行代码“myAWSIoTMQTTClient.subscribe("topic_1", 1, customCallback)" topic_1 已发布,但如果尝试从另一个 python 控制台访问订阅 topic_1,它只会返回 true,并且不会打印来自自定义回调的消息。只有在同一 python 控制台中同时保留订阅和发布时,它才能工作,但我尝试在单独的控制台中运行订阅和发布,然后它会引发错误。换句话说,我如何订阅已经创建的主题?
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
import time
import argparse
import json
host = "XXXXXXXX.iot.us-east-2.amazonaws.com"
rootCAPath = "root-CA.crt"
certificatePath = "XXXXX.cert.pem"
privateKeyPath = "XXXXX.private.key"
port = 8883
clientId = "sdk-java"
topic = "topic_1"
message_to_print="aws aws_preethi"
def customCallback(client, userdata, message):
print("Received a new message: ")
print(message.payload)
print("from topic: ")
print(message.topic)
print("--------------\n\n")
myAWSIoTMQTTClient = AWSIoTMQTTClient(clientId)
myAWSIoTMQTTClient.configureEndpoint(host, port)
myAWSIoTMQTTClient.configureCredentials(rootCAPath, privateKeyPath, certificatePath)
# AWSIoTMQTTClient connection configuration
myAWSIoTMQTTClient.configureAutoReconnectBackoffTime(1, 32, 20)
myAWSIoTMQTTClient.configureOfflinePublishQueueing(-1) # Infinite offline Publish queueing
myAWSIoTMQTTClient.configureDrainingFrequency(2) # Draining: 2 Hz
myAWSIoTMQTTClient.configureConnectDisconnectTimeout(10) # 10 sec
myAWSIoTMQTTClient.configureMQTTOperationTimeout(5) # 5 sec
# Connect and subscribe to AWS IoT
myAWSIoTMQTTClient.connect()
myAWSIoTMQTTClient.subscribe("topic_1", 1, customCallback)
# Publish to the same topic in a loop forever
loopCount = 0
while True:
message = {}
message['message'] = message_to_print
message['sequence'] = loopCount
messageJson = json.dumps(message)
myAWSIoTMQTTClient.publish(topic, messageJson, 1)
loopCount += 1
time.sleep(10)
【问题讨论】:
-
嘿,我就是这样做的,connect() 和 subscribe() 都返回“True”,但 subscribe 没有在终端屏幕上打印任何内容。我错过了什么吗?我的 customCallback() 和你的一样……
标签: python-3.x aws-sdk