AWS IoT MQTT 서비스를 사용해야합니다. 현재 https://github.com/aws/aws-iot-device-sdk-python으로 실험하고 있습니다.AWS IoT Python SDK 및 asyncio
내 응용 프로그램은 다른 서비스와 통신하기 위해 웹 소켓을 사용하고 메시지 전달/수신을 위해 MQTT 주제를 공개/등록합니다.
이 라이브러리가 코드 실행을 차단할 가능성이 있습니까? 나는 아직도 asyncio 주위에 내 머리를 얻으려고 노력하고, 내가 무엇을 찾아야하는지 확신하지 못한다. 그것이 문제를 일으키는 지 어떻게 알 수 있습니까?
나는 위의 라이브러리에만 AWSIoTMQTTClient을 사용해야한다고 생각합니다.
class AWSIoTClient:
def __init__():
...
self.client = AWSIoTMQTTClient(...)
def subscribe(self, callback):
self.client.subscribe(f'{self.TOPIC}/subscribe/', 0, callback)
def publish(self, message):
self.client.publish(self.TOPIC, message, 0)
class MyWSProtocol(WebSocketClientProtocol):
def set_aws_client(self, client: AWSIoTClient):
client.subscribe(self.customCallback)
self.client = client
def customCallback(self, client, userdata, message):
# This will be called when we send message from AWS
if message.payload:
message = json.loads(message.payload.decode('utf-8').replace("'", '"'))
message['id'] = self.next_id()
self.sendMessage(json.dumps(message).encode('utf-8'))
def onMessage(self, payload, isBinary):
message = json.loads(payload)
# This will forward message to AWS
self.client.publish(str(payload))
디버그 문을 추가하여 무언가가 나타나는지 확인합니다. 감사합니다. – Giannis
흠, 디버그 오류가 없습니다. 계속 살펴볼 것입니다. SDK가 어떻게 작동하는지 이해해야합니다. – Giannis