python-3.x Paho-mqtt与pahcio库

axkjgtzd  于 8个月前  发布在  Python
关注(0)|答案(2)|浏览(77)

我想实现paho-mqtt,它应该异步处理传入的消息。
我已经实现了gmqtt与pagencio,运行完美,但据我所知,paho-mqtt是更好地使用,而不是gmqtt(链接:https://www.emqx.io/blog/comparision-of-python-mqtt-client)。
gmqtt w/callcio:

def assign_callbacks_to_client(self, client):
    """ Helper function which sets up client's callbacks. """
    client.on_connect = self.on_connect
    client.on_message = self.on_message
    client.on_disconnect = self.on_disconnect
    client.on_subscribe = self.on_subscribe

async def subscriber(self, mqtt_name):
    """ Connect to mqtt-broker. """
    sub_client = MQTTClient(mqtt_name)
    self.assign_callbacks_to_client(sub_client)
    logging.info("connecting")
    await sub_client.connect(host=config.MQTT_HOST, port=int(config.MQTT_PORT))
    return sub_client

字符串
你能让我知道,如何实现paho与paho库?将使用loop_start异步,因为我知道每次执行它启动一个新的线程在后台。

evrscar2

evrscar21#

loop_start()只创建一个后台线程,所有回调都将在其上运行,您不应该直接在这些回调中执行长时间运行的任务,因为它们会阻止客户端的所有其他操作。
如果你想在不阻塞的情况下处理传入的消息,那么你需要实现自己的线程池,只需要使用on_message()回调来将消息推送到这个线程池。

iyfamqjs

iyfamqjs2#

看看aiomqtt.aiomqtt吧,它将久经考验的paho-mqtt库的稳定性与直观、惯用的javascio界面结合在一起。

相关问题