㈠ Python MQTT 异步框架 —— HBMQTT
异步模式解决了CPU速度与IO操作之间的性能瓶颈问题,Python通过引入异步IO特性,使得在遇到IO操作时,程序能够继续执行其他任务,提高效率。Python3.4版本开始标准库中加入了asyncio,并在Python3.5版本中引入了async/await关键字。HBMQTT作为最早的Python MQTT异步框架,实现了MQTT3.1.1协议。
HBMQTT是一个基于Python编写的开源MQTT客户端库,其特性包括支持MQTT3.1.1协议等。通过使用HBMQTT库,可以轻松实现MQTT的发布和订阅功能。
首先,确定使用Python3.6版本进行开发测试,并确保Python版本不低于3.5。使用Pip安装HBMQTT库。连接MQTT服务器时,可以使用EMQ X提供的免费公共MQTT服务器,其接入信息包括服务器地址、端口等。
发布消息的异步函数为MQTTClient类的publish方法。在订阅消息时,使用MQTTClient类中的subscribe方法。实现异步操作的关键在于使用await等待事件的发生,例如接收消息时。
完整代码包含了消息发布和订阅的实现。发布消息代码将三个发送消息函数放入asyncio任务列表中,依次执行。订阅消息代码在接收消息时设置了await,当有消息到达时,CPU会继续执行其他任务,直到消息接收完成。最终程序会等待10次消息接收后关闭连接。
运行测试代码,可以看到MQTT客户端成功连接服务器,并成功发布和订阅消息。在MQTT X客户端上,可以查看到HBMQTT客户端发布的消息。通过使用Python异步IO执行消息的发送和接收,可以实现高效、快速的MQTT客户端。
总结,通过使用HBMQTT库与MQTT服务器连接,实现测试客户端与MQTT服务器之间的连接、消息发布和订阅,充分发挥了Python异步IO的优势,提高了MQTT客户端的性能。后续将发布更多关于物联网开发与Python相关的内容,敬请关注。
㈡ Python什么爬虫库好用
aiohttp:是纯粹的异步框架,同时支持HTTP客户端和服务端,可以快速实现异步爬虫,并且其中的aiohttp解决了requests的一个痛点,它可以轻松实现自动转码,对于中文编码就很方便了。
asks:Python自带一个异步的标准库asyncio,但这个库很多人觉得并不好用,而里面的ask则是封装了curio和trio的一个http请求库。用起来和
Requests 90%相似,新手也可以很快上手。
vibora:号称是现在最快的异步请求框架,跑分是最快的。写爬虫、写服务器响应都可以用。但这个项目一直在重构,现在页面上还挂着项目正在重构的警告,使用需谨慎。
Pyppeteer:是异步无头浏览器,从跑分来看比Selenium+webdriver快,使用方式是最接近于浏览器的自身的设计接口的。它本身是来自
Google维护的puppeteer,但是按照Python社区的梗,作者进行了封装并且把名字中的u改成了y。
下面为大家介绍一下框架:
Grab:是很流行的渐进式框架,Grab可以说是爬虫界的渐进式框架,又十分简单的用法,封装的也很好,是基于生成器异步的设计。
botflow:概念很新颖,定位成了处理数据工作流的框架,可以用来爬虫、机器学习、量化交易等等。
ruia:比较接近Scrapy的使用方式,异步设计。