paho-mqtt:回调线程

问题描述:

我正在用paho-mqtt在python中实现一个MQTT worker。 所有的on_message()函数在不同的线程中都是多线程的,这样如果其中一个任务耗时,其他消息仍然可以被处理? 如果不是,我该如何实现这种行为?paho-mqtt:回调线程

谢谢你的帮助!

python客户端实际上并没有启动任何线程,这就是为什么你必须调用循环函数来处理网络事件。

在Java中,您可以使用onMessage回调函数将传入消息放置到单独的线程池将处理的本地队列中。

Python没有本地线程支持,但支持产生进程以像线程一样工作。多处理的详细信息可以在这里找到:

https://docs.python.org/2.7/library/multiprocessing.html

编辑: 在看泛美卫生组织Python代码一点点接近看来其实是可以启动一个新的线程(使用loop_start()函数)接近处理以前需要环路功能的网络端。这不会改变所有对on_message回调的调用都会在此线程上发生的事实。如果你需要在这个回调中做大量的工作,你应该看起来转动一堆新线程来完成这项工作。

http://www.tutorialspoint.com/python/python_multithreading.htm

+0

你建议我线程或异步(如双绞线),如果我需要做对消息繁重处理? – user3684457

+0

如果处理一条消息可能需要比消息之间的差距,那么你应该看看多个线程。但是请记住,这只能发生在爆发中,否则你最终会在消息中等待本地队列或线程的数量不断增加 – hardillb

+0

有没有办法改进python管理线程的方式?是否有我应该考虑的限制(同时没有更多的x线程?)? – user3684457