AWS IoT MQTTサービスを使用する必要があります。私は現在https://github.com/aws/aws-iot-device-sdk-pythonで実験しています。AWS IoT Python SDKとasyncio
私のアプリケーションはWebソケットを使用して別のサービスと通信し、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
Hm、デバッグからのエラーはありません。探し続けると、SDKがそのソースからどのように機能するのかを理解する必要があると思います。 – Giannis