㈠ 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的使用方式,非同步設計。